2010-10-05 31 views
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

回答

2

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

+0

嗨Gregor Kiddie,谢谢你的留言。我仍然在学习自定义事件。我不明白我需要改变什么。我试图让我的事件发送productName字符串回主应用程序。有什么建议么?谢谢。 – Laxmidi 2010-10-05 17:46:12

+0

嗨,Gregor,我添加了公共静态常量ADD_PRODUCT:String =“addProduct”;在公共类AddProductEvent扩展Event {...之后,现在它工作。谢谢! – Laxmidi 2010-10-05 18:37:28

相关问题