我正在尝试学习如何在 Flex 中使用自定义事件。
我正在关注 Oliver Merk 在此处找到的教程:博客
如果我在主应用程序中使用 MXML 实现自定义事件,则该自定义事件有效。但是,如果我使用 actionscript,则会收到错误 1119:通过静态类型 Class 的引用访问可能未定义的属性 ADD_PRODUCT。
我的事件:在事件子目录中,我有:
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 );
}
}
}
在组件中,我有一个 radioButtonGroup
<mx:RadioButtonGroup id="choicesRadioButtonGroup" itemClick="onButtonClick()"/>
private function onButtonClick():void {
var myEventObj:Event = new AddProductEvent("addProduct", "Flex T-shirt");
dispatchEvent(myEventObj);
}
这是组件中的元数据和导入语句:
<mx:Metadata>
[Event (name="addProduct", type="events.AddProductEvent")]
</mx:Metadata>
import events.AddProductEvent;
在主应用程序中,我有:
import events.AddProductEvent;
private function onAddProduct( event:AddProductEvent ):void {
mx.controls.Alert.show('Attached data was ' + event.productName);
}
如果我像这样在主应用程序中实现组件:
<visualcomponent:PopWindow addProduct="onAddProduct(event)" />
然后一切正常。
如果我像这样在 actionscript 中实现主应用程序中的组件,则会收到错误消息:
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);}
}
我在 addEventListener 行上得到错误。我究竟做错了什么?有什么建议吗?
谢谢你。
-拉克西米迪