Setar a política de criação para all é um work-around (eu, por exemplo, odeeeeeeio work-around).

O que eu sei sobre isso:

Criar componentes é custoso, por isso, quando parte dos sub-componentes de um componente não estão visíveis (ex.: componentes em uma outra aba de um TabNavigator), o Flex simplesmente não os instancia... Deixa pra fazer isso na hora que o usuário for realmente àquela tab. Tudo isso para economizar no tempo de instanciação de um componente e prover o resultado que o usuário verá o mais rápido possível.

Há certos casos, por exemplo, que eu quero carregar os dados de um combo e então, depois de carregado, mudar o currentState por exemplo. Isso falhará, porque antes da mudança do state o combo ainda não existe (é um combo qüântico, he he he), então tem um macete que é bem útil: setar os valores do combo em um delegate anônimo (closure) usando a função callLater: callLater(function():void{combo.bla});

O que o callLater faz? Executa o delegate anônimo durante a próxima troca de quadros (que acontece depois que o state é alterado, como se fosse um Application.DoEvents())

Desta forma eu consigo acessar componentes que ainda não foram criados, mas que estão prestes a serem.

Há também um comando para criar os componentes manualmente (que é o que deve ser feito no caso da política de criação ser None: createComponentsFromDescriptors).

E há o último método que é a política queued, onde os componentes entram numa fila de criação, mas o componente-pai é liberado imediatamente (diferente do normal, onde o componente só aparece quando todos os filhos aparecerem e do all, onde o componente só aparece quando todos os filhos, inclusive ocultos, são instanciados)

http://livedocs.adobe.com/flex/3/html/help.html?content=layoutperformance_05.html

http://livedocs.adobe.com/flex/3/html/help.html?content=layoutperformance_07.html#172599




--------------------------------------------------
From: "Bruno Carneiro" <guimaraescarne...@gmail.com>
Sent: Wednesday, November 18, 2009 8:01 AM
To: "flexdev" <flexdev@googlegroups.com>
Subject: [flexdev] Re: objeto null


As vezes, eu também tenho problemas dessa natureza.

Não sei ao certo como funciona essa lógica da carga dos componentes.

Saio setando tudo como "ALL"

Será que existe alguma artigo que fale sobre isso?

On 18 nov, 07:41, Abner Campanha <abne...@gmail.com> wrote:
galera...  estou com o seguinte problema...

tenho um cadastrinho feito com mdiwindow...  quando a tela é criada eu
adiciono um canvas que tem um panel principal...  a primeira vez que
abre eu já crio outros 2 forms (listagem e cadastro) e fico trocando
esses forms do panel conforme o usuário clica em novo (listagem),
cancelar e salvar (cadastro)....

cenário: form de listagem está exibindo no panel
ação: usuário clica em novo registro
o que faço:

pnl.removeChildrens();
pnl.addChild(formCadastro();

O problema é apenas na primeira vez que eu troco o form da listagem
pelo cadastro... ocorre um objetct = null quando tento acessar
qualquer objeto desse meu form de cadastro, como limpar os campos por
exemplo.
Depois que ocorre o erro e eu continuo, tudo fica normal...

Dei uma pesquisada e vi que os objetos são instanciados apenas quando
são exibidos... então coloquei um creationPolicy="all" nesse meu panel
do form principal...  o erro não ocorre mais, mas o comportamento
ainda está estranho.... estou no caminho certo ??? ring any bells ???

agradeço qualquer centavo ;)...

abraços

--
Abner Campanha
--~--~---------~--~----~------------~-------~--~----~
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

Reply via email to