Erro flexível no evento personalizado simples quando implementado no ActionScript (mas não no MXML)

StackOverflow https://stackoverflow.com/questions/3865673

  •  28-09-2019
  •  | 
  •  

Pergunta

Estou tentando aprender a usar eventos personalizados no Flex.

Estou seguindo o tutorial de Oliver Merk encontrado aqui: blog

O evento personalizado funciona se eu o implementar usando MXML no aplicativo principal. Mas, se eu usar o ActionScript, recebo erros 1119: acesso de propriedade possivelmente indefinida Add_Product por meio de uma referência com classe de tipo estático.

Meu evento: no subdiretório de eventos, eu tenho:

package events {

   import flash.events.Event;

   public class AddProductEvent extends Event {

      public var productName:String;

      public function AddProductEvent( type:String, productName:String ) {

         super( type );
         this.productName = productName;

      }

      override public function clone():Event {
         return new AddProductEvent( type, productName );
      }

   }
}

No componente, eu tenho um RadiobutTonGroup

<mx:RadioButtonGroup id="choicesRadioButtonGroup" itemClick="onButtonClick()"/>



private function onButtonClick():void {
            var myEventObj:Event = new AddProductEvent("addProduct", "Flex T-shirt");
            dispatchEvent(myEventObj);
        } 

Este é o metadado no componente e a declaração de importação:

<mx:Metadata>
    [Event (name="addProduct", type="events.AddProductEvent")]
</mx:Metadata>

import events.AddProductEvent;

No aplicativo principal, eu tenho:

import events.AddProductEvent;

private function onAddProduct( event:AddProductEvent ):void {
mx.controls.Alert.show('Attached data was ' + event.productName);
}

Se eu implementar o componente no aplicativo principal como este:

<visualcomponent:PopWindow addProduct="onAddProduct(event)" />

Então tudo funciona.

Se eu implementar o componente no aplicativo principal no ActionScript como este, recebo um erro:

public function clickHandler2(event:MouseEvent):void {

    if(event.currentTarget.selected){popWindow = new PopWindow;
        queryBuilder(event.currentTarget);
        PopUpManager.addPopUp(popWindow, my_view, false);
        PopUpManager.centerPopUp(popWindow);

            popWindow.addEventListener(AddProductEvent.ADD_PRODUCT, onAddProduct);}

    }

Recebo o erro na linha AddEventListener. O que estou fazendo errado? Algum conselho?

Obrigada.

-Laxmidi

Foi útil?

Solução

Sua classe AddProductevent parece não expor uma sequência estática pública chamada Add_Product, que tem o valor "AddProduct", que é o que parece que você está tentando fazer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top