Errore Flex su evento personalizzato semplice quando implementato in Actionscript (ma non in MXML)

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

  •  28-09-2019
  •  | 
  •  

Domanda

Sto cercando di imparare come utilizzare gli eventi personalizzati in Flex.

Sto seguendo il tutorial di Oliver Merk trovato qui: blog

L'evento personalizzato funziona se lo implemento utilizzando MXML nell'app principale.Ma se utilizzo ActionScript, ottengo l'errore 1119:Accesso alla proprietà eventualmente non definita ADD_PRODUCT tramite un riferimento di tipo statico Class.

Il mio evento:Nella sottodirectory degli eventi, ho:

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 );
      }

   }
}

Nel componente, ho un radioButtonGroup

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



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

Questi sono i metadati nel componente e nell'istruzione di importazione:

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

import events.AddProductEvent;

Nell'app principale ho:

import events.AddProductEvent;

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

Se implemento il componente nell'app principale in questo modo:

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

allora funziona tutto.

Se implemento il componente nell'app principale in ActionScript come questo, ottengo un errore:

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);}

    }

Ottengo l'errore sulla riga addEventListener.Che cosa sto facendo di sbagliato?Qualche consiglio?

Grazie.

-Laxmidi

È stato utile?

Soluzione

La tua classe AddProductEvent non sembra esporre una stringa statica pubblica chiamata ADD_PRODUCT che ha il valore "addProduct" che è quello che sembra che tu stia tentando di fare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top