Sem usar parentDocument, Application.application ou precisar estender:

ARQUIVO TesteClass.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
layout="absolute" creationComplete="init()" xmlns:ns1="*">
<mx:Script>
        <![CDATA[
                public var $view:TesteClassView;
                public function init():void{
                        $view = new TesteClassView(this);
                }
        ]]>
</mx:Script>
        <mx:Button x="56" y="123" label="Button" id="bt"/>
        <ns1:telaLogin x="160" y="170">
        </ns1:telaLogin>

</mx:Application>


CLASSE QUE REPRESENTA/CONTROLA O ARQUIVO TesteClass.mxml:

package
{
        public class TesteClassView
        {
                public var app:TesteClass;
                function TesteClassView(app:TesteClass){
                        app  = app;
                        app.bt.label = "Clica Aqui pô!";
                }
        }
}


TAMBÉM FUNCIONA PARA COMPONENTES.
COMPONENTE telaLogin.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute"
width="400" height="300" creationComplete="init()">
        <mx:Script>
                <![CDATA[
                        public var $telaLoginView:TelaLoginView;
                        public function init():void{
                                $telaLoginView = new TelaLoginView(this);
                        };

                ]]>
        </mx:Script>
</mx:Panel>


CLASSE QUE REPRESENTA/CONTROLA O ARQUIVO telaLogin.mxml:

package{
        public class TelaLoginView      {

                function TelaLoginView(tela:telaLogin){
                        tela = tela;
                        tela.title = "Tela Login";
                        trace(tela.x);
                }
        }
}



ISTO FUNCIONA POIS OS ARQUIVOS .MXML SÃO CLASSES.

On 11 jul, 18:57, Ricardo Ramires <[EMAIL PROTECTED]> wrote:
> Humm, tava fuçando aqui e consegui fazer o que eu queria. Vi que o
> parentDocument e o parentApplication sao criados na classe
> UIComponent, estendi ela entao... ficou assim:
>
> 1 - Aplicacao (Teste.mxml):
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> layout="vertical"
>         xmlns:telas="*">
>
>         <mx:Script>
>                 <![CDATA[
>                         trace(" ---> aplicacao");
>                 ]]>
>         </mx:Script>
>
>         <telas:Tela1 />
>
>         <mx:Label id="app_txt" />
>
> </mx:Application>
>
> 2 - O component (Tela1.mxml):
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml";
>         xmlns:controls="*"
>         creationComplete="tela1_control.init()">
>
>         <mx:Script>
>                 <![CDATA[
>                         trace(" ---> tela 1");
>                 ]]>
>         </mx:Script>
>
>         <controls:Tela1Control id="tela1_control"/>
>
>         <mx:Button id="tela1_btn" label="Botão tela 1"/>
>
>         <mx:Label id="tela1_txt" />
>
> </mx:VBox>
>
> 3 - A classe (Tela1Control.as):
>
> package
> {
>         import mx.core.UIComponent;
>         import flash.events.MouseEvent;
>
>         [Bindable]
>         public class Tela1Control extends UIComponent
>         {
>                 public function Tela1Control()
>                 {
>                         trace(" ---> Tela1Control - construtor");
>                 }
>
>                 public function init():void
>                 {
>                         trace(" ---> Tela1Control - metodo init");
>                         
> parentDocument.tela1_btn.addEventListener(MouseEvent.CLICK,
> botaoHandler);
>                 }
>
>                 private function botaoHandler(event:MouseEvent):void
>                 {
>                         trace(" ---> Tela1Control - metodo botaoHandler");
>                         parentDocument.tela1_txt.text = "Acessou 
> parentDocument !";
>                         parentApplication.app_txt.text = "Acessou 
> parentApplication !";
>                 }
>         }
>
> }
>
> Funcionou, mas tive de chamar uma funcao (init) na classe com o
> creationComplete do component...
>
> Achei estranha eu nao poder usar o parentDocument no construtor do
> classe Tela1Control, pois pela ordem dos traces ele parece ser
> executado primeiro ;-(
>
> Que zica, hehehehe
>
> Ricardo
>
> On 11 jul, 08:04, Beck Novaes <[EMAIL PROTECTED]> wrote:
>
> > No way!
>
> > A não ser que você passe o objeto que instanciou o classe como
> > parâmetro:
>
> > teste_cl = new TesteControl2(this);
>
> > Agora, isso aqui tá muito estranho:
>
> > public function TesteControl2()
> > {
> >    trace(parentDocument)
> >    trace(this);
> >    trace(this.parentDocument);
> >    parentDocument.TesteControl2.addEventListener(MouseEvent.CLICK,
> > botaoHandler);
>
> > }
>
> > Na ultima linha deste construtor, para quê você precisa referenciar o
> > "parentDocument.TesteControl2" sendo que você está dentro do próprio
> > "TesteControl2"? Ou seja, você não poderia fazer assim:
>
> > public function TesteControl2()
> > {
> >    trace(parentDocument)
> >    trace(this);
> >    trace(this.parentDocument);
> >    this.addEventListener(MouseEvent.CLICK, botaoHandler);
>
> > }
>
> > []'s
> > Beck Novaes
>
> > On 10 jul, 17:26, Ricardo Ramires <[EMAIL PROTECTED]> wrote:
>
> > > Tenho uma aplicacao que estou desenvolvendo e gostaria de deixar nos
> > > arquivos mxml apenas os components com seus respectivos id's e fazer
> > > toda a programacao separada em classes mas nao to conseguindo acessar
> > > o documento superior com o parentDocument
>
> > > A idéia é se eu tiver um component chamado Teste.mxml teria também uma
> > > classe TesteControl.as com o código que manipula essa tela.
>
> > > Assim funciona mas sobe até a raiz:
>
> > > Teste.mxml
>
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > > layout="vertical"
> > >         creationComplete="init()">
>
> > >         <mx:Script>
> > >                 <![CDATA[
> > >                         [Bindable]
> > >                         private var teste_cl:TesteControl;
>
> > >                         private function init():void
> > >                         {
> > >                                 teste_cl = new TesteControl();
> > >                         }
> > >                 ]]>
> > >         </mx:Script>
>
> > >         <mx:Button id="botao_btn" label="Clique"/>
> > >         <mx:Label id="texto_txt" />
>
> > > </mx:Application>
>
> > > TesteControl.as
>
> > > package
> > > {
> > >         import flash.events.EventDispatcher;
> > >         import flash.events.MouseEvent;
> > >         import mx.core.ApplicationGlobals;
>
> > >         public class TesteControl extends EventDispatcher
> > >         {
> > >                 public var raizDaAplicacao:Object = 
> > > ApplicationGlobals.application;
>
> > >                 public function TesteControl()
> > >                 {
> > >                         
> > > raizDaAplicacao.botao_btn.addEventListener(MouseEvent.CLICK,
> > > botaoHandler);
> > >                 }
>
> > >                 private function 
> > > botaoHandler(botaoHandler:MouseEvent):void
> > >                 {
> > >                         raizDaAplicacao.texto_txt.text = "Clicou !";
> > >                 }
> > >         }
>
> > > }
>
> > > ---------------------------------------------------------
>
> > > Mas se a tela for um component, nao deu certo, tentei assim:
>
> > > 1 - Tenho a aplicacao (Teste2.mxml)
>
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > > layout="vertical"
> > >         initialize="init()" xmlns:local="*">
>
> > >         <local:CompTeste />
>
> > > </mx:Application>
>
> > > 2 - Que chama o component(CompTeste.mxml):
>
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml";
> > > creationComplete="init()">
>
> > >         <mx:Script>
> > >                 <![CDATA[
> > >                         [Bindable]
> > >                         private var teste_cl:TesteControl2;
>
> > >                         private function init():void
> > >                         {
> > >                                 teste_cl = new TesteControl2();
> > >                         }
> > >                 ]]>
> > >         </mx:Script>
>
> > >         <mx:Button id="botao_btn" label="Clique 2"/>
> > >         <mx:Label id="texto_txt" />
>
> > > </mx:VBox>
>
> > > 3 - E tem a classe para controlar ele (TesteControl2.as)
>
> > > package
> > > {
> > >         import flash.events.MouseEvent;
> > >         import mx.core.UIComponent;
>
> > >         public class TesteControl2 extends UIComponent
> > >         {
> > >                 public function TesteControl2()
> > >                 {
> > >                         trace(parentDocument)
> > >                         trace(this);
> > >                         trace(this.parentDocument);
> > >                         
> > > parentDocument.TesteControl2.addEventListener(MouseEvent.CLICK,
> > > botaoHandler);
> > >                 }
>
> > >                 private function 
> > > botaoHandler(botaoHandler:MouseEvent):void
> > >                 {
> > >                         parentDocument.texto_txt.text = "Clicou !";
> > >                 }
> > >         }
>
> > > }
>
> > > O que eu to querendo é acessar os id's dos components do mxml onde eu
> > > instanciei a classe...
>
> > > Se alguem puder dar uma luz, agradeço
>
> > > Ricardo


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

Responder a