Ошибка Flex для простого настраиваемого события при реализации в Actionscript (но не в MXML) - PullRequest
0 голосов
/ 05 октября 2010

Я пытаюсь научиться использовать пользовательские события во Flex.

Я следую учебному пособию Оливера Мерк, найденному здесь: blog

Настраиваемое событие работает, если я реализую его с помощью MXML в основном приложении.Но, если я использую actionscript, то получаю ошибку 1119: Доступ к возможно неопределенному свойству ADD_PRODUCT через ссылку со статическим типом Class.

Мое событие: В подкаталоге events я получил:

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

1 Ответ

2 голосов
/ 05 октября 2010

Ваш класс AddProductEvent, по-видимому, не предоставляет общедоступную статическую строку ADD_PRODUCT со значением «addProduct», которое выглядит так, как будто вы пытаетесь сделать.

...