logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Mar 4

Evitando problemas com Views e DTOs

Escrito por DClick Team em 1, 4, 6, Access, app, Apresentação, AR, BI, class, código, código fonte, Componente, dados, Data Binding, Download, err, exemplo, flash, Flex, Flex Components, fonte, framework, Frameworks, FullScreen, gc, IE, if, lógica, Mac, O, on, Partilha, problema, problemas, pt, Ria’s Geral, screen, Screencast, string, swf, TAT, tv, Twitter, UI, UX, wave @ 03 4th, 2010 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

No seu aplicativo você tem um DTO cujo os dados são renderizados por diferentes Views (telas). Então, toda hora que o seu DTO muda, você percebe sua aplicação travada por uns segundos. Depois de um tempo você percebe que o problema é que mesmo as telas que estão invisíveis estão executando código de apresentação de dados com base no novo DTO. Bem, este é um problema comum quando trabalhamos com DTOs complexos e abusamos do Data Binding.

A notícia ruim é que se você não teve este problema ainda, um dia você terá. A notícia boa é que uma das maneiras de evitar este problema é utilizar o DTOViewHelper, componente disponibilizado neste screencast.

Alguns Frameworks atuais do Flex oferecem maneiras de resolver este problema, mas o DTOViewHelper é independente do Framework que você usa. Além disso, como pode ser visto no Screencast, você pode definir métodos auxiliares dentro do DTOViewHelper com o objetivo compartilhar lógica de apresentação de dados de DTOs entre diferentes Views (veja o exemplo da Data que mostra a string “Hoje” no Screencast).

Clique aqui para fazer o download do código fonte do exemplo “errado” (I could be WRONG).

Clique aqui para fazer o download do código fonte do exemplo “certo” (I could be RIGHT).

Fev 22

Rotacionando Janelas no Flex: PodFlip Component

Escrito por DClick Team em 1, 3d, 4, 6, Access, Actionscript, Adobe, Adobe Flex, app, AR, class, código, código fonte, Componente, comunidade, Download, egenial, flash, Flash Player, Flex, Flex 4, Flex Components, fonte, FullScreen, futuro, gc, Imersão Adobe Flex, Mac, NaN, O, on, Partilha, Pessoal, player, pt, rest, Ria’s Geral, screen, Screencast, swf, TAT, tv, Twitter, UI, wave @ 02 22nd, 2010 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

A ultima turma do Imersão Adobe Flex recebeu alguns “presentinhos”. Dentre eles o componente PodFlip, utilizado numa das aplicações que desenvolvemos aqui na DClick e que o pessoal já andou vendo por aí.

É verdade que o Flex 4 e com as novas capacidades 3D do Flash Player isso será bem mais fácil no futuro. Mas enquanto este dia não chega agora é a hora de compartilhar este componente com o restante de comunidade. Espero que seja util em algum projeto para vocês.

Clique aqui para fazer o download do código fonte deste screencast.

Nov 10

Terça Insana Mega Post: Um Post, um Screencast, dois componentes e um Podcast

Escrito por DClick Team em 1, 2009, 4, 6, Access, app, Apresentação, AR, arte, class, Componente, Componentes, control, DataGrid, Download, flash, Flex, Flex Components, for, FullScreen, html, IE, int, interface, itemRenderer, O, on, podcast, pt, Ria’s Geral, screen, Screencast, Sun, swf, tag, TAT, Terça Insana, tv, Twitter, UI, Vários, wave @ 11 10th, 2009 | via http://blog.dclick.com.br/pt/ | 1 comentário
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

Resolvi repetir a dose. E aqui estou eu novamente para mais um Terça Insana Megapost.

Componente ValidatorGroup: Use apenas um validador para mais de um controle de interface.

[kml_flashembed movie="/sources/validationGroup/ValidationGroup.swf" width="496" height="190"/]
Download do ValidatorGroup

HTMLTextItemRenderer: Use um ItemRenderer super leve para formatação “avançada” de uma célula no DataGrid

[kml_flashembed movie="/sources/htmlRenderer/HTMLTextItemRendererSample.swf" width="496" height="264"/]
Download do HTMLTextItemRenderer

Screencast 2 em 1: Entenda os dois componentes em apenas 5 minutos.





Podcast: Podcast baseado numa “reunião/apresentação” sobre componentetização e vários assuntos “avançados” de Flex na DClick. Neste Podcast a Parte I da reunião com foco em componentização e performance no front-end



Download do Podcast


http://www.becklog.org/wp-content/uploads/2009/reuniao-parte1.mp3

Nov 3

Terça Insana Mega-Post: Um post, três screencasts e três componentes

Escrito por DClick Team em 1, 2009, 4, 6, Access, app, AR, class, Componente, Componentes, Download, flash, Flex, Flex Components, FullScreen, IE, Mac, O, on, pt, quick, Review, Ria’s Geral, screen, Screencast, screencasts, swf, TAT, tv, Twitter, UI, wave @ 11 3rd, 2009 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

Componente QuickView: Faça um Preview dos seus DTOs

[kml_flashembed movie="/sources/megapost/QuickViewUsage2.swf" width="496" height="264"/]
Download do QuickView

Componente QuickSearch: Faça um QuickSearch como no MAC OS

[kml_flashembed movie="/sources/megapost/QuickSearch.swf" width="496" height="264"/]
Download do QuickSearch

Componente PodStack: Faça transições sem abrir mão do View Stack

[kml_flashembed movie="/sources/megapost/PodStackSample.swf" width="500" height="450"/]
Download do PodStack

Screencast 3 em 1: Entenda tudo isso em apenas 12 minutos. Nada de textos e posts longos complicados.

Out 1

Formulários dinâmicos com validadores

Escrito por DClick Team em Actionscript, Adobe, Arquitetura da Informação, Cairngorm & Patterns, Flash Platform, Flex, Flex Components, Gumbo, programação, RIA, Tutorial @ 10 1st, 2009 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Em minha estréia, trago para você este script para agilizar a construção de formulários Flex, ele apenas aponta “o caminho”, você deverá implementar com os demais validadores.

Para isso vamos começar pela classe Event. chamaremos essa classe de CustomEvent, seu objetivo será criar o validador dentro do evento (mx.events.FlexEvent) creationComplete do campo, para isto foi necessário adicionar três propriedades à classe, que são: validateType do tipo Object que receberá as informações para configurar o validador, o validator do tipo coringa para que fique mais fácil de trabalhar com vários validadores diferentes (aqui vou trabalhar apenas com mx.validators.StringValidator e mx.validators.EmailValidator), e a constante contendo o nome do evento que vai caracterizar a configuração que chamamos de VALIDATECHANGE.

PLAIN TEXT
ACTIONSCRIPT:

  1. package core.events
  2. {
  3.  
  4.         import flash.events.Event;
  5.        
  6.         import mx.events.FlexEvent;
  7.         import mx.validators.EmailValidator;
  8.         import mx.validators.StringValidator;
  9.        
  10.         public class CustomEvent extends FlexEvent
  11.         {
  12.                 static public const VALIDATECHANGE:String =‘validatechange’;
  13.                 private var _validateType:Object;
  14.                 private var _validator:*;
  15.                
  16.                 public function CustomEvent(type:String,validateType:Object, bubbles:Boolean=false,cancelable:Boolean=false)
  17.                 {
  18.                         super(type, bubbles,cancelable);
  19.                         setValidator(validateType);
  20.                 }
  21.  
  22.                 public override function clone() : Event {
  23.                         return new CustomEvent(CustomEvent.VALIDATECHANGE,validateType);
  24.                 }
  25.  
  26.                 public override function toString():String {
  27.                         return formatToString(‘CustomEvent’,‘type’, ‘bubbles’, ‘cancelable’, ‘validateType’,‘validator’);
  28.                 }
  29.  
  30.                 public function get validateType():Object
  31.                 {
  32.                         return _validateType;
  33.                 }
  34.  
  35.                 public function get validator():*
  36.                 {
  37.                         return _validator;
  38.                 }
  39.  
  40.                 private function setValidator(params:Object):void
  41.                 {
  42.                         if(params.validateType.length <1){
  43.                                 return;
  44.                         }
  45.                         _validateType = params;
  46.                         switch(params.validateType){
  47.                                 case ‘string’:
  48.                                 case ‘noblank’:
  49.                                    _validator = new StringValidator();
  50.                                     if(params.message.length> 0){
  51.                     _validator.requiredFieldError =
  52.                     _validator.requiredFieldError =
  53.                     _validator.tooLongError =
  54.                     _validator.tooShortError = params.message;
  55.                                     }
  56.                                     _validator.minLength = 1;
  57.                                 break;
  58.                                 case ‘email’:
  59.                                _validator = new EmailValidator();   
  60.                                 if(params.message.length> 0){
  61.                                     _validator.requiredFieldError =
  62.                                     _validator.invalidCharError =
  63.                                     _validator.invalidDomainError =
  64.                                     _validator.invalidIPDomainError =
  65.                     _validator.invalidPeriodsInDomainError =
  66.                                     _validator.missingAtSignError =
  67.                     _validator.missingPeriodInDomainError =
  68.                                    _validator.missingUsernameError = params.message;
  69.                                 }                   
  70.                                break;
  71.                         }
  72.                     _validator.source = params.source;
  73.             _validator.property = params.property;
  74.                     _validator.required = params.required;
  75.                         _validator.triggerEvent = params.triggerEvent;           
  76.                     _validator.enabled = true;
  77.                 }               
  78.         }
  79. }

Os validadores são classes/tags separadas do campo, para agilizar o desenvolvimento precisamos dos validadores nos campos, para isso vamos manipular uma classe baseada no TextInput (spark.components.TextInput), de forma a permitir a passagem da configuração básica do validador na tag, trabalharemos com a tag CustomInput adicionando esses atributos, que são eles: validateType que distinguirá o tipo do validador, message contendo a mensagem que será enviada ao navegador em caso de erro, required caracteriza como requerido ou não, index que ocupará o lugar do id. Para manipulação interna foram criadas as propriedades: _initialized responsável por informar se é a primeira vez que o validador será criado,_params responsável por armazenar as configurações para criação do validador, e _validator o próprio validador.

PLAIN TEXT
ACTIONSCRIPT:

  1. package core.mxml
  2. {
  3.  
  4.         import core.events.CustomEvent;
  5.         import core.model.CustomModelLocator;
  6.        
  7.         import mx.events.FlexEvent;
  8.         import mx.utils.ObjectUtil;
  9.        
  10.         import spark.components.TextInput;
  11.  
  12.         [Event(name=“validatechange”, type=“core.events.CustomEvent”)]
  13.                
  14.         public class CustomInput extends TextInput
  15.         {
  16.  
  17.                 private var _initialized:Boolean = false;
  18.                 private var _params:Object       = {validateType:”,message:”,source:”,index:”,property:‘text’,required:false,triggerEvent:‘change’};
  19.                 private var _validator:* ;
  20.                 private var _model:CustomModelLocator;
  21.                 private var _validateType:String;
  22.                 private var _message:String      = ”;
  23.                 private var _required:Boolean    = false;
  24.                 private var _index:int;
  25.                 private var _source:String;
  26.                
  27.                 public function CustomInput()
  28.                 {
  29.                         _model = CustomModelLocator.getInstance();
  30.                         super();
  31.             addEventListener(FlexEvent.CREATION_COMPLETE,onCreationComplete);
  32.                 }
  33.                
  34.                 private function dispatchEventCustom():void{
  35.                         _params.validateType = _validateType;
  36.                         _params.message      = _message;
  37.                         _params.required     = _required;
  38.                         _params.source       = this;
  39.                         _params.index        = _index;
  40.                         dispatchEvent(new CustomEvent(CustomEvent.VALIDATECHANGE,_params));
  41.                 }
  42.  
  43.                 private function onCreationComplete(event:FlexEvent):void {
  44.                         id = this.id = super.id = name;
  45.             addEventListener(CustomEvent.VALIDATECHANGE,setValidator);
  46.                         dispatchEventCustom();
  47.                          _initialized = true;
  48.                 }
  49.                
  50.                 public function get validator():* {
  51.                         return _validator;
  52.                 }
  53.  
  54.                 private function setValidator(event:CustomEvent):void
  55.                 {
  56.                         enabled = true;
  57.                         _validator = event.validator;
  58.             _model[_source][event.validateType.index].validator = event.validator;
  59.                 }
  60.                
  61.                 public function get validateType():String
  62.                 {
  63.                         return _validateType;
  64.                 }
  65.                
  66.                 [Bindable(event=“validatechange”)]
  67.                 [Inspectable(enumeration=“noblank,string,email”, name=‘validateType’)]
  68.                 public function set validateType(v:String):void
  69.                 {
  70.                         _validateType = v;
  71.                         if(_initialized){
  72.                                 dispatchEventCustom();
  73.                         }
  74.                 }
  75.                
  76.                 public function get message():String
  77.                 {
  78.                         return _message;
  79.                 }
  80.  
  81.                 [Inspectable(type=‘String’, name=‘message’)]
  82.                 public function set message(v:String):void
  83.                 {
  84.                         _message = v;
  85.                 }
  86.  
  87.                
  88.                 public function get source():String
  89.                 {
  90.                         return _source;
  91.                 }
  92.  
  93.                 [Inspectable(type=‘String’, name=‘source’)]
  94.                 public function set source(v:String):void
  95.                 {
  96.                         _source = v;
  97.                 }
  98.  
  99.                 public function get required():Boolean
  100.                 {
  101.                         return _required;
  102.                 }
  103.                
  104.                 [Inspectable(type=‘Boolean’, name=‘required’)]
  105.                 public function set required(v:Boolean):void
  106.                 {
  107.                         _required = v;
  108.                 }
  109.  
  110.                 public function get index():int
  111.                 {
  112.                         return _index;
  113.                 }
  114.  
  115.                 public function set index(v:int):void
  116.                 {
  117.                         _index = v;
  118.                 }
  119.  
  120.  
  121.         }
  122. }

Os campos serão criados no modelo da classe Form (mx.containers.Form), e como quero deixar meu formulário mais genérico, ou seja, quero que os ids, labels e validadores, sejam flexíveis, possibilitando uma criação dinâmica, foi criada então a tag CustomFormBase, que receberá os dados para configuração do formulário, dinamicamente, em uma única propriedade, e ainda receberá a ação do submit (que não foi trabalhada tão profundamente).

PLAIN TEXT
ACTIONSCRIPT:

  1. package core.mxml
  2. {
  3.         import core.model.CustomModelLocator;
  4.        
  5.         import flash.events.MouseEvent;
  6.        
  7.         import mx.collections.ArrayCollection;
  8.         import mx.containers.Form;
  9.         import mx.controls.Alert;
  10.         import mx.events.FlexEvent;
  11.         import mx.validators.Validator;
  12.        
  13.         import spark.components.Button;
  14.  
  15.         public class CustomFormBase extends Form
  16.         {
  17.                 public var send:Button;
  18.                 private var _source:ArrayCollection;
  19.                 private var _model:CustomModelLocator;
  20.                 private var _dataConfig:String;
  21.                
  22.                
  23.                
  24.                 public function CustomFormBase()
  25.                 {
  26.                         _model = CustomModelLocator.getInstance();
  27.                         super();
  28.             addEventListener(FlexEvent.CREATION_COMPLETE,doCreationComplete);
  29.                 }
  30.                
  31.                 private function doCreationComplete(event:FlexEvent):void
  32.                 {                       
  33.             send.addEventListener(MouseEvent.CLICK,submit);
  34.                 }
  35.                
  36.                 protected function submit(event:MouseEvent):void
  37.                 {
  38.                          var _validators:Array = new Array();
  39.                         for(var i:int=0;i<_source.length;i++){
  40.                 _validators.push(_source[i].validator);
  41.                         }
  42.                     _validators = Validator.validateAll(_validators);
  43.             if (_validators.length == 0) {
  44.                 Alert.show(“Preenchimento correto”, “SUCCESSO”);
  45.             }
  46.                 }               
  47.  
  48.                
  49.                 public function get source():ArrayCollection
  50.                 {
  51.                         return _source;
  52.                 }
  53.                
  54.                 public function get dataConfig():String
  55.                 {
  56.                         return _dataConfig;
  57.                 }
  58.                
  59.                 [Bindable]
  60.                 [Inspectable(type=‘String’, name=‘dataConfig’)]
  61.                 public function set dataConfig(v:String):void
  62.                 {
  63.                         _dataConfig = v;
  64.                         _source = _model[v];
  65.                 }
  66.  
  67.                
  68.         }
  69. }

Nosso primeiro MXML é bem simples, utilizando a classe Repeater (mx.core.Repeater), dispondo as tag da maneira que desejamos que sejam vizualizadas. (atenção UX)

PLAIN TEXT
CODE:

  1. <mxml:CustomFormBase
  2.                 xmlns:fx=“http://ns.adobe.com/mxml/2009″
  3.                 xmlns:s=“library://ns.adobe.com/flex/spark”
  4.                 xmlns:mx=“library://ns.adobe.com/flex/halo”
  5.                 xmlns:mxml=“core.mxml.*”>
  6.                 <mx:Repeater id=“configure” dataProvider=“{source}”>
  7.                         <mx:FormItem label=“{configure.currentItem.label}” width=“100%”>
  8.                                 <mxml:CustomInput width=“100%”
  9.                                         source=“{dataConfig}”
  10.                     name=“{configure.currentItem.id}” 
  11.                     message=“{configure.currentItem.message}”
  12.                     required=“{configure.currentItem.required}”
  13.                     validateType=“{configure.currentItem.validateType}”
  14.                     text=“{configure.currentItem.text}”
  15.                     index=“{configure.currentIndex}” />
  16.                         </mx:FormItem>           
  17.         </mx:Repeater>
  18.         <mx:FormItem width=“100%” horizontalAlign=“right”>
  19.                  <s:Button id=“send” label=“Submit” />       
  20.         </mx:FormItem>
  21. </mxml:CustomFormBase>

Já que criamos um padrão de construção, vamos continuar nele, separando o ActionScript do MXML, durante a criação do arquivo de referência da aplicação.

PLAIN TEXT
ACTIONSCRIPT:

  1. package core.mxml {
  2.     import core.model.CustomModelLocator;
  3.    
  4.     import mx.collections.ArrayCollection;
  5.    
  6.     import spark.components.Application;
  7.  
  8.    
  9.    
  10.     public class CustomApplication extends Application
  11.     {
  12.        
  13.            
  14.         [Bindable] private var _model:CustomModelLocator;
  15.        
  16.         public function CustomApplication()
  17.         {
  18.             _model = CustomModelLocator.getInstance();
  19.             super();
  20.         }
  21.    
  22.         public function get dataConfig1():String
  23.         {
  24.             return _model.DATASOURCE1;
  25.         }
  26.        
  27.         public function get dataConfig2():String
  28.         {
  29.             return _model.DATASOURCE2;
  30.         }
  31.  
  32.     }
  33. }

E adicionamos os dados (fake) fixos.

PLAIN TEXT
ACTIONSCRIPT:

  1. package core.model
  2. {
  3.         import mx.collections.ArrayCollection;
  4.  
  5.         [Bindable]
  6.         public class CustomModelLocator
  7.         {
  8.                 public const DATASOURCE1:String =  ‘dataConfig1′;
  9.                 public const DATASOURCE2:String =  ‘dataConfig2′;
  10.                
  11.                 public var dataConfig1:ArrayCollection;
  12.                
  13.                 public var dataConfig2:ArrayCollection;           
  14.    
  15.                
  16.                 static private var instance:CustomModelLocator;
  17.                
  18.         static public function getInstance() : CustomModelLocator
  19.         {
  20.             if ( instance == null ){
  21.              instance = new CustomModelLocator(new CustomSingleton());
  22.             }
  23.             return instance;
  24.        }
  25.                
  26.                
  27.        public function CustomModelLocator(singleton:CustomSingleton)
  28.        {
  29.            if ( singleton == null ){
  30.                 throw new Error( “Construção inválida” );
  31.            }else{
  32.                 dataConfig1 = new ArrayCollection([
  33.                     {label:‘Nome’,message:‘Nome inválido’,validateType:‘noblank’,id:‘nome’,text:‘Pedro Claudio’,required:true},
  34.             {label:‘E-mail’,message:‘E-mail inválido’, validateType:‘email’,id:‘email’,text:”,required:true}
  35.                ]);     
  36.                 dataConfig2 = new ArrayCollection([
  37.             {label:‘Endereço’,message:‘Endereço inválido’,validateType:‘noblank’,id:‘end’,text:”,required:true },
  38.                         {label:‘Bairro’,message:‘Bairro inválido’,validateType:‘noblank’,id:‘bairro’,text:”,required:false},
  39.                         {label:‘Cidade’,message:‘Cidade inválida’,validateType:‘noblank’,id:‘bairro’,text:”,required:true }
  40.            ]);             
  41.            }                   
  42.        }
  43.    }
  44. }
  45. class CustomSingleton {}

Por fim nossa chamada mãe.

PLAIN TEXT
CODE:

  1. <mxml:CustomApplication
  2.         xmlns:fx=“http://ns.adobe.com/mxml/2009″
  3.         xmlns:s=“library://ns.adobe.com/flex/spark”
  4.         xmlns:mx=“library://ns.adobe.com/flex/halo”
  5.         xmlns:mxml=“core.mxml.*” viewSourceURL=“srcview/index.html”>
  6.         <mx:HDividedBox>
  7.                 <s:Panel width=“350″>
  8.                         <mxml:CustomForm dataConfig=“{dataConfig1}”  width=“100%” />
  9.                 </s:Panel>
  10.                 <s:Panel width=“350″>
  11.                         <mxml:CustomForm dataConfig=“{dataConfig2}”  width=“100%” />
  12.                 </s:Panel>
  13.         </mx:HDividedBox>
  14. </mxml:CustomApplication>

exemplo
source

Este material foi registrado no http://cookbooks.adobe.com, local onde, a comunidade de desenvolvedores e usuários de tecnologias Adobe, podem compartilhar informações. E ainda no http://blog.pcsilva.com, origem do post.

Mai 18

ProgressBar parou de funcionar? Faltou coizinha…

Escrito por DClick Team em bar, Flex, Flex Components, progress @ 05 18th, 2009 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Derrepente, progressBar que sempre funcionou parou de funcionar. Bem pra dar estresse quando prazo é bem curto.  Para passar direto de assunto… Acontece quando invez de player 9.x passou de usar 10.x.

Antigamente se você não colocou nada, ou colocou mode=”manual” no progressBar, funcionou. Agora com player 10, tem que colocar mode=”{ProgressBarMode.MANUAL}” se omite, barra nunca vai correr, se você tá setando pelo setProgress(loaded, total) de fora.

Mar 4

Carrossel 3D com Flash Player 10

Escrito por DClick Team em Actionscript, Flex, Flex Components @ 03 4th, 2009 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Eu havia postado uma breve introdução sobre efeitos 3D nativos do Flash Player 10 há algum tempo. Com base naquele estudo e um entendimento melhor de como o FP10 funciona, criei este componente que, apesar de comum para quem usa frameworks 3D (Papervision, etc…), funciona muito bem nativo e consequentemente fica muito mais leve.

Além disso o componente funciona com qualquer DisplayObject, tornando sua interatividade ainda maior.

A demo a seguir mostra o componente e algumas de suas propriedades:

id=”fm_index_1535020385″
class=”flashmovie”
width=”500″
height=”450″>


Você pode visualizar aqui o código fonte.
(Não esqueça que este é um projeto FP10. Para este funcionar vá em Propriedade do Projeto > Flex compiler > Require Flash Player e preencha com 10.0.0).

| Entradas recentes »

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com