خطأ فليكس في حدث مخصص بسيط عند تطبيقه في ActionScript (ولكن ليس في MXML)
-
28-09-2019 - |
سؤال
أحاول أن أتعلم كيفية استخدام الأحداث المخصصة في Flex.
أنا أتابع البرنامج التعليمي الخاص بـ Oliver Merk هنا: مقالات
يعمل الحدث المخصص إذا قمت بتطبيقه باستخدام MXML في التطبيق الرئيسي. ولكن ، إذا استخدمت ActionScript ، فأنا أحصل على خطأ 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)" />
ثم كل شيء يعمل.
إذا قمت بتطبيق المكون في التطبيق الرئيسي في 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. ما الخطأ الذي افعله؟ اي نصيحه؟
شكرًا لك.
-laxmidi
المحلول
لا يبدو أن فئة AddProductevent الخاصة بك تعرض سلسلة ثابتة عامة تسمى Add_product والتي لها قيمة "AddProduct" وهو ما يبدو أنك تحاول القيام به.