Errore Flex su evento personalizzato semplice quando implementato in Actionscript (ma non in MXML)
-
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
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.