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
[email protected]
http://blog.mxml.com.br
2009/4/13 Michael Antunes <[email protected]>
>
> 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 [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
-~----------~----~----~----~------~----~------~--~---