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.comPara sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.comMais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---
smime.p7s
Description: S/MIME cryptographic signature