Você chegou no detalhe que mais se apanha no Flex.

*Causa*
O Flex é assíncrono. ou seja, ele não espera que a função
listaObjetosAcesso() retorne valores para após chamara a função testa().

*Solução*
Quando a função onResultStatus() for invocado você despacha um evento
dizendo que o Flex já possui os dados e no init() você fica lendo os
eventos.

*Porque o botão funciona*
Quando você preciona o botão, os dados já retornaram.
    *Eduardo Kraus*
Desenvolvedor
 eduardokr...@gmail.com
http://blog.mxml.com.br


2009/4/13 Michael Antunes <michaelantu...@terra.com.br>

>
> Seguinte pessoal,
>
> Tenho uma classe chamada Acessa.as, nesta classe eu crio dinamicamente
> um Remote Object com as seguintes caracteristicas:
>
>              [Bindable] public var arrDados:ArrayCollection;
>
>               public function listaObjetosAcesso():void {
>                        var ro    : RemoteObject = new RemoteObject();
>                        ro.destination          = "ManipulaAcessos";
>                        ro.showBusyCursor   = true;
>                        ro.addEventListener(ResultEvent.RESULT,
> onResultStatus);
>                        ro.addEventListener(FaultEvent.FAULT,onFalha);
>                        ro.jListaLiberados('SELECT * FROM ACESSOS');
>                }
>
>                private function onResultStatus(rs:ResultEvent):void {
>                        arrDados = rs.result as ArrayCollection;
>
>  //Alert.show(arrDados.getItemAt(0).objeto.toString());
>                }
>
>                public function possuiDados():int {
>                        return arrDados.length
>                }
>
>
>                private function onFalha(ev: FaultEvent): void {
>                        Alert.show(ev.fault.faultString);
>                }
>
>
> Tenho um mxml chamado Acesso.mxml
>
>                private var AccComp:AcessaComponente = new
> AcessaComponente();
>                        private function init():void {
>                        AccComp.listaObjetosAcesso();
>                        testa( );
>                }
>
>                private function testa():void {
>                        Alert.show(AccComp.possuiDados().toString());
>                }
>
> O meu problema é o seguinte... a função init esta no
> creationComplete="init();" do módulo, e quando é executada, ele passa
> o array com valores negativos. agora, se comento  a função "teste"
> chamada dentro do init e a chamo em um click do botão, ele me
> apresenta corretamente o numero de valores que eu possuo no array.
> Como eu faço, para fazer tudo isso na função init, ou seja, no
> creation ja carregar o array e me apresentar o numero de valores que
> esse array possui.
>
> ABRAÇOS!
>
>
>
> >
>

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

Responder a