Um tempo atraz tive problemas, e aprendi que usar o creationPolicy="all" não
era viavel,
e foi fazendo uma melhor gestao de eventos&funções que consegui driblar esse
problema.
hoje trabalho bastante com viewstate, e trabalho bastante com show events,
recebendo parametro apenas do canvas inicial e etc.

2009/11/21 J.C.Ködel <[email protected]>

> Próximo passo agora é desenvolver um datagrid com suporte à paginação ou
> linhas virtuais. ;-)
>
> --------------------------------------------------
> From: "RafaelViana" <[email protected]>
> Sent: Saturday, November 21, 2009 10:52 AM
>
> To: "flexdev" <[email protected]>
> Subject: [flexdev] Re: Tela demora para abrir
>
>
>
>> Valeu pelas dicas.
>>
>> Tinha aqui uma tela também com uns 200 itens, que quando era aberto
>> piscava na tela pela inicialização lenta.
>> Arrumei o creationPolicy para auto e coloquei eventos no
>> creationComplete e enterFrame ficou bom.Já tinha até esquecido que
>> existia esse creationPolicy rsrs se tornou um pessimo vicio de colocar
>> sempre como all.
>> Apesar que ainda acho que não seja problemático em telas com 1,2 ou
>> até 20~30 itens. (Porém quando sobrar um tempinho vou dar uma revisada
>> nas telas)
>>
>> On 20 nov, 21:28, J.C.Ködel <[email protected]> wrote:
>>
>>> 200 itens é muito? Tenho um aplicativo com 1,500,00 =P
>>>
>>> To vendo que muita gente está tendo problemas com a criação atrasada dos
>>> componentes no flex, então, vamos lá:
>>>
>>> Em primeiro lugar, temos que ter consciência de que o Flex é construído
>>> de
>>> uma forma otimizada, ou seja, ele não vai criar componentes
>>> desnecessários
>>> nem irá travar em uma operação de I/O (por sua natureza single threaded),
>>> por isso as comunicações assíncronas (que, acreditem, são boas). Mesmo
>>> tecnologias multi-thread, como Silverlight, ainda operam somente de forma
>>> assíncrona (o navegador reclama bastante quando algo prende sua thread,
>>> já
>>> que o estúpido roda os plug-ins na mesma thread do navegador, e isso é
>>> verdade para TODOS eles, não só a caca do IE).
>>>
>>> O engine do Flex é absurdamente pesado (porém absurdamente poderoso), por
>>> isso coisas que não são necessárias em um determinado momento
>>> simplesmente
>>> não serão apresentadas.
>>>
>>> O que fazer então?
>>>
>>> Bom, depende muito de onde você está:
>>>
>>> 1) View States
>>>
>>> Imagine que você queira limpar o conteúdo de todos os campos de texto de
>>> um
>>> state quando você muda pra ele (por exemplo, sair do state atual e voltar
>>> ao
>>> state de autenticação): para isso existe o evento enterState, que é
>>> disparado quando você está entrando no state (ou seja, o currentState
>>> mudou). Neste ponto, teus componentes já estarão instanciados e você
>>> poderá
>>> executar qualquer ação sobre eles alí.
>>>
>>> Mas, imagine que você possua o seguinte código:
>>>
>>> currentState = "OutroEstado";
>>> cboMeuCombo.selectedIndex = 0; // Este combo está no state outro estado
>>>
>>> Isso não vai funcionar (porque cboMeuCombo não foi instanciado ainda, da
>>> primeira vez), nem é bom colocar no enterState porque senão este código
>>> será
>>> executado TODA vez que o state mudar (e nem sempre é isso o que você
>>> quer).
>>> O que fazer então?
>>>
>>> currentState = "OutroEstado";
>>> callLater(function():void{cboMeuCombo.selectedIndex = 0;});
>>>
>>> Assim, o delegate anônimo será executado durante o próximo quadro e o
>>> combo
>>> estará criado sem problemas.
>>>
>>> 2) Tab Navigators, ViewStack, etc.
>>>
>>> Um outro ponto que dá problemas também são componentes com multi-visões,
>>> como abas, viewstack, etc. Quando o componente é criado, ele instancia
>>> apenas os filhos da aba ou stack que será imediatamente exibido. Isso
>>> significa que uma aba não pode acessar componentes de outra aba (pelo
>>> menos
>>> da primeira vez), porque eles não foram construídos ainda.
>>>
>>> CallLater também não pode ser usado aqui, porque você não sabe exatamente
>>> quando a aba será mudada (a menos, claro, que esteja explicitamente
>>> mudando
>>> a aba via código).
>>>
>>> Um evento interessante aqui é o show, que é disparado quando o Container
>>> (Canvas, Box, VBox, etc.) está sendo mostrado. Isso ocorre TODA vez que a
>>> outra aba é acionada, então você pode utilizar uma flag do tipo:
>>>
>>> private var TaInicializado:Boolean = false;
>>>
>>> E no evento show da segunda aba:
>>>
>>> if(TaInicializado == false) { TaInicializado = true; Codigo de
>>> Inicializacao
>>> Aqui }
>>>
>>> Uma outra solução que uso freqüêntemente é o poder do data binding do
>>> Flex:
>>>
>>> Imagine que você queira alterar o texto de campos de texto que não foram
>>> criados ainda:
>>>
>>> Porque não usar <mx:Text label="{VariavelString}"/> e alterar a
>>> VariavelString, ao invés da propriedade label do Text? Desta forma, irá
>>> funcionar em todos os casos, não precisa alterar a política de criação e
>>> ainda tem a vantagem de poder fazer o data binding em duas vias (ida e
>>> volta) e obter os dados para envio para uma função remota, por exemplo,
>>> sem
>>> ter que ficar checando se o componente existe.
>>>
>>> Neste caso, é útil uma função presente em todos os componentes do Flex:
>>> executeBindings(includeChildren:Boolean).
>>>
>>> O que esta função faz é "re-bindar" aquele componente e, opcionalmente
>>> (se
>>> passado true como parâmetro), todos os filhos daquele componente.
>>>
>>> Flex (felizmente) exige mais um programador do que só um simples
>>> desenvolvedor. Pode parecer complicado ou frustrante à princípio mas,
>>> acredite, você vai amar o bichin assim que conseguir domesticá-lo ;-)
>>>
>>> --------------------------------------------------
>>> From: "Taciano.Peruzzo" <[email protected]>
>>> Sent: Friday, November 20, 2009 8:17 PM
>>> To: "flexdev" <[email protected]>
>>> Subject: [flexdev] Tela demora para abrir
>>>
>>>
>>>
>>>
>>>
>>> > Boa noite galera, estou desenvolvendo uma aplicação de administração
>>> > de imoveis, e está ocorrendo o seguinte:
>>> > Tenho uma tela de cadastro com muitos itens, muitos mesmos uns 200
>>> > +/- , num tabNavigator distribuidos em umas 5 abas, e precisei usar o
>>> > creationPolicy="All" para zerar os textInput de dentro dessas abas,
>>> > pois estava dando erro nesse lado, só que o tempo de criação dessa
>>> > janela aumentou consideravelmente, leva em torno de 5 segundos depois
>>> > do click para aparecer e começar a carregar os dados. Gostaria de
>>> > saber da lista se tem alguma forma de não usar o creationPolicy, ou de
>>> > agilizar a abertura. Tentei colocar um setBusyCursor, mas nao deu
>>> > certo, ele só aparece depois da janela, poderia ate ser uma
>>> > alternativa para avisar o usuario da demora. Alguém alguma sugestão?
>>> > >
>>>
>>>
>>>  smime.p7s
>>> 6KExibirDownload
>>>
>>
>> >>
>

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a