Ошибка Flex на простом пользовательском событии при реализации в ActionScript (но не в MXML)
-
28-09-2019 - |
Вопрос
Я пытаюсь научиться использовать пользовательские события в Flex.
Я следую за учебником Оливера Мерка, найденный здесь: блог
Пользовательское событие работает, если я реализую его с помощью 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 );
}
}
}
В компоненте у меня есть радиооборудование
<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», которое похоже, что вы пытаетесь сделать.