Para evitar este tipo de confusão eu sempre faço o seguinte:

No começo do método, eu defino uma variável chamada me e igualo ela à this, 
assim, eu posso usar me. em todo lugar sem precisar me preocupar com escopo 
(uso me pq programo server side em VB onde Me é this) =)

Closures (o que vocês chamam de "função dentro de outra") é algo muito poderoso 
e útil, mas, como tudo que é bom, tem que usar com responsabilidade =) Depois 
de modules, closures são os segundos maiores culpados por memory leak em 
JavaScript e ActionScript.

From: Fabio Ebner 
Sent: Monday, December 07, 2009 12:08 PM
To: flexdev@googlegroups.com 
Subject: [flexdev] Re: Alert Customizado


o mlkao foi .. o q acontece q eu estava fazendo dentro de um funcao dentro de 
outra.. dai ele estava se confundindo.. joguei pra uma funcao simples rodou :D


2009/12/7 Marcel Pigozzi <marcelpsara...@gmail.com>

  ah é verdade ... confusão minha! mals =/


  2009/12/7 J.C.Ködel <jcko...@gmail.com> 


    this representa o escopo atual, não a classe!
    Principal motivo de confusão em closures (anonymous delegates).

    ex.:

    public class foo()
    {
      public function bar():void
      {
          var x:Object = this;  // x é do tipo foo

          callLater(function():void
          {
              var y:Object = this;  // y é um delegate anônimo (funct...@000000)
          });
      }
    }


    From: Marcel Pigozzi 
    Sent: Monday, December 07, 2009 11:35 AM
    To: flexdev@googlegroups.com 
    Subject: [flexdev] Re: Alert Customizado


    opa ...
    fiz aqui um teste, colocando um canvas dentro da application .. certo ? 
Quando a application é carregada, ela chama o canvas ... e ele trata do PopUp 
... aqui funcionou tranquilo ... o this, se não me engano, corresponde a 
própria classe ... ;-)

    []s


    2009/12/7 Fabio Ebner <faeb...@gmail.com>

      Entao pelo q eu entendi o q acontece, para dar certo esse meu THIS teria 
q ser a minha mx:Application porem eu estou chamando ele de dentro de um 
canvas, logo qdo vou o this ele fala q nao consegue converter o canvas para 
Application, tentei usar this.parent dentro do canvas, porem ele me retorna 
null, sabe como eu posso pegar o parent do meu canvas dentro dele??

      valeu 



      2009/12/7 Marcel Pigozzi <marcelpsara...@gmail.com>

        Testei aqui e funcionou ...Deve ter alguma coisa errada no seu 
application
        no entanto, fiz de outra forma ... veja como ficou: 



        <?xml version="1.0" encoding="utf-8"?>

        <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; 
layout="absolute"> 

            
            <mx:Script>
                <![CDATA[
                    import mx.managers.PopUpManager;
                

                    private var _win:SelecionarEnderecos;
                    
                    private function onClick():void {
                        _win = new SelecionarEnderecos();
                        PopUpManager.addPopUp(_win, this, true);
                    }
                    
                ]]>
            </mx:Script>
            
            <mx:Button id="btn" click="onClick()" />
            
        </mx:Application>


        t+ 




        2009/12/7 Fabio Ebner <faeb...@gmail.com>

          Marcel , esta quase la, eu executo a seguinte linha:

          var 
pop1:SelecionarEnderecos=SelecionarEnderecos(PopUpManager.createPopUp(this, 
SelecionarEnderecos, true));

          estou recebendo o seguinte erro:


          TypeError: Error #1034: Falha de coerção de tipo: não é possível 
converter glo...@4016d91 em flash.display.DisplayObject.


          esse glo...@4016d91 e o meu this. da funcao createPopUp;


          segue a minha SelecionarEnderecos:



          <?xml version="1.0" encoding="utf-8"?>
          <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml";
                          layout="absolute"
                          width="602"
                          height="252"
                          title="Selecionar Endereço"
                          showCloseButton="false"
                          visible="true">

              <mx:Script>
                  <![CDATA[
                      import mx.managers.PopUpManager;
                      [Bindable]
                      public var enderecoList:Array;

                      private function selectEndereco(evt:Event):void
                      {
                          removeMe();
                      }

                      private function removeMe():void
                      {
                          PopUpManager.removePopUp(this);
                      }
                  ]]>
              </mx:Script>
              <mx:DataGrid x="10"
                           y="10"
                           width="562"
                           height="162"
                           id="listaEndereco"
                           editable="false"
                           enabled="true"
                           dataProvider="{enderecoList}">
                  <mx:columns>
                      <mx:DataGridColumn headerText="Column 1"
                                         dataField="col1"/>
                      <mx:DataGridColumn headerText="Column 2"
                                         dataField="col2"/>
                      <mx:DataGridColumn headerText="Column 3"
                                         dataField="col3"/>
                  </mx:columns>
              </mx:DataGrid>
              <mx:Button x="10"
                         y="180"
                         label="Selecionar"
                         width="243"
                         id="botaoSelecionar"
                         click="selectEndereco(event)"/>
              <mx:Button x="329"
                         y="180"
                         label="Cancelar"
                         width="243"
                         id="botaoCancelar"
                         click="removeMe()"/>

          </mx:TitleWindow>



          2009/12/7 Marcel Pigozzi <marcelpsara...@gmail.com>

            vc pode utilizar o titleWindow ;-)
            segue: 
http://livedocs.adobe.com/flex/3/html/help.html?content=layouts_12.html

            abraços


            2009/12/7 Fabio Ebner <faeb...@gmail.com> 


              Pessoal e possivel eu abrir um alert customizado?? quero um alert 
com uma dataGrid, e dois botoes Cancelar e Selecionar, que o usuario possa 
escolher uma linha do dataGrid e retorne para a minha aplicacao a linha 
selecionada


              valeu






            -- 

            Marcel Pigozzi

            "Procure ser uma pessoa de valor, em vez de procurar ser uma pessoa 
de sucesso. O sucesso é conseqüência"











        -- 
        Marcel Pigozzi

        "Procure ser uma pessoa de valor, em vez de procurar ser uma pessoa de 
sucesso. O sucesso é conseqüência"










    -- 
    Marcel Pigozzi

    "Procure ser uma pessoa de valor, em vez de procurar ser uma pessoa de 
sucesso. O sucesso é conseqüência"





  -- 
  Marcel Pigozzi

  "Procure ser uma pessoa de valor, em vez de procurar ser uma pessoa de 
sucesso. O sucesso é conseqüência"





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

Responder a