在Actionscript中实现(但不是在MXML)当简单的自定义事件的Flex错误

StackOverflow https://stackoverflow.com/questions/3865673

  •  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 );
      }

   }
}

在该组件,我有一个的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

有帮助吗?

解决方案

您AddProductEvent类似乎并没有公开公共静态字符串称为ADD_PRODUCT其值为“addProduct命令”,这是什么样子,你正在尝试做的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top