Flex Fehler auf einfache benutzerdefinierte Ereignis, wenn in Actionscript implementiert (aber nicht in MXML)
-
28-09-2019 - |
Frage
Ich versuche zu lernen, wie benutzerdefinierte Ereignisse in Flex zu verwenden.
Ich folge Oliver Merk Tutorial finden Sie hier: Blog
Das benutzerdefinierte Ereignis funktioniert, wenn ich es in dem Haupt-App MXML implementieren. Aber, wenn ich Actionscript verwenden, dann bekomme ich Fehler 1119:. Den Zugriff von möglicherweise nicht definierte Eigenschaft ADD_PRODUCT über einen Verweis mit statischem Typ Class
Meine Veranstaltung: In den Ereignissen Unterverzeichnis, ich habe:
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 );
}
}
}
In der Komponente, ich habe eine Radiobutton
<mx:RadioButtonGroup id="choicesRadioButtonGroup" itemClick="onButtonClick()"/>
private function onButtonClick():void {
var myEventObj:Event = new AddProductEvent("addProduct", "Flex T-shirt");
dispatchEvent(myEventObj);
}
Dies ist die Metadaten in der Komponente und die Import-Anweisung:
<mx:Metadata>
[Event (name="addProduct", type="events.AddProductEvent")]
</mx:Metadata>
import events.AddProductEvent;
In dem Haupt-app, ich habe:
import events.AddProductEvent;
private function onAddProduct( event:AddProductEvent ):void {
mx.controls.Alert.show('Attached data was ' + event.productName);
}
Wenn ich die Komponente in der Hauptanwendung wie folgt implementieren:
<visualcomponent:PopWindow addProduct="onAddProduct(event)" />
dann funktioniert alles.
Wenn ich die Komponente in der Hauptanwendung in Actionscript wie dies umzusetzen, ich einen Fehler dann bekommen:
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);}
}
Ich erhalte den Fehler auf der addEventListener Linie. Was mache ich falsch? Jede Beratung?
Danke.
-Laxmidi
Lösung
Ihre AddProductEvent Klasse scheint nicht eine öffentliche statische Zeichenfolge genannt ADD_PRODUCT zu belichten, die den Wert „addProduct“ hat das ist, was es sieht aus wie Sie versuchen zu tun.