2010-10-05 35 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

相關問題