Próximo passo agora é desenvolver um datagrid com suporte à paginação ou linhas virtuais. ;-)

--------------------------------------------------
From: "RafaelViana" <rfl.vi...@gmail.com>
Sent: Saturday, November 21, 2009 10:52 AM
To: "flexdev" <flexdev@googlegroups.com>
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 <jcko...@gmail.com> 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" <taciano.peru...@gmail.com>
Sent: Friday, November 20, 2009 8:17 PM
To: "flexdev" <flexdev@googlegroups.com>
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 flexdev@googlegroups.com
Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Responder a