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