0
我正试图学习如何在Flex中使用自定义事件。在Actionscript中实现简单自定义事件时发生Flex错误(但不是在MXML中)
我下面的奥利弗·默克的教程在这里找到:如果我是在主应用程序中使用MXML实现blog
自定义事件的作品。但是,如果我使用动作脚本,那么出现错误1119:通过静态类型类的引用访问可能未定义的属性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)" />
然后一切正常。
如果我实现了在这样动作的主要应用程序的组件,然后我得到一个错误:
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行的错误。我究竟做错了什么?有什么建议?
谢谢。
-Laxmidi
嗨Gregor Kiddie,谢谢你的留言。我仍然在学习自定义事件。我不明白我需要改变什么。我试图让我的事件发送productName字符串回主应用程序。有什么建议么?谢谢。 – Laxmidi 2010-10-05 17:46:12
嗨,Gregor,我添加了公共静态常量ADD_PRODUCT:String =“addProduct”;在公共类AddProductEvent扩展Event {...之后,现在它工作。谢谢! – Laxmidi 2010-10-05 18:37:28