2010-05-05 33 views
2

我創建了一個自定義的MouseEvent中的Flex:FLEX,Actionscript:我如何調用CustomEvent?

package { 

    import flash.events.MouseEvent; 
    public class CustomMouseEvent extends MouseEvent { 

     public var tags:Array = new Array();  
     public function CustomMouseEvent(type:String, tags:Array) { 
      super(type, true); 
      this.tags = tags; 
     } 
    } 
    } 

現在我想了解如何從ActionScript和MXML傳遞參數標籤:

從ActionScript我想這樣的事情,但它不工作:

newTag.addEventListener(MouseEvent.MOUSE_UP, dispatchEvent(new CustomMouseEvent(MouseEvent.MOUSE_UP,[newTag.name]))); 

從MXML我這樣做,並沒有工作,以及:

<mx:LinkButton click="dispatchEvent(new CustomMouseEvent(MouseEvent.MOUSE_UP, bookmarksRepeater.currentItem.tags))" /> 

感謝

+0

你得到了什麼錯誤? – oedo 2010-05-05 14:59:33

+1

爲什麼你讓你的類擴展MouseEvent?如果你創建一個擴展Event的類,我會認爲它更容易,也更清晰。 (而且我猜你會更好,如果你定義了你自己的事件名稱,並且在這種情況下不使用MOUSE_UP) – 2010-05-05 16:22:36

+0

好吧,我現在正在擴展事件 – aneuryzm 2010-05-05 18:32:14

回答

3

嘗試在功能包裝的回調代碼:

newTag.addEventListener(MouseEvent.MOUSE_UP, function(e:MouseEvent):void { 
    dispatchEvent(new CustomMouseEvent(MouseEvent.MOUSE_UP, [e.currentTarget.name])); 
}); 

我覺得跟MXML代碼的問題是,你正在使用一箇中繼器,並試圖讓重複後currentItem已完成。試試這個:

<mx:LinkButton click="dispatchEvent(new CustomMouseEvent(MouseEvent.MOUSE_UP, event.currentTarget.getRepeaterItem().tags))" /> 

希望有所幫助。

更新

因爲要創建在一個循環中newTag對象,你只要使用一個命名函數作爲事件偵聽器獲得更好的內存使用情況。

newTag.addEventListener(MouseEvent.MOUSE_UP, onTagClick); 

... 

protected function onTagClick(e:MouseEvent):void { 
    dispatchEvent(new CustomMouseEvent(MouseEvent.MOUSE_UP, [e.currentTarget.name])); 
} 

這樣,你只能創建一個事件偵聽器,而不是n聽衆,做同樣的事情。

+0

是啊..我有同樣的問題與newTag。 newTag是在for循環中創建的,所以我newTag.name只是我添加的最後一個標記的名稱(當我觸發事件時,運行時)。那麼解決方案是什麼? – aneuryzm 2010-05-05 15:32:32

+0

剛剛更新了我的答案,以顯示使用事件的'currentTarget'來獲取正確的'newTag'對象。那樣有用嗎? – 2010-05-05 15:39:58

+0

完美。我所有的問題都解決了 – aneuryzm 2010-05-05 19:02:43

2

此外,您可能會因爲沒有重寫克隆方法而使TypeErrors變得更糟。你現在應該解決這個問題,之後再進入它。

格爾茨
back2dos

+0

酷感謝提示。 +1 – aneuryzm 2010-05-05 18:31:35

0

你有沒有試圖改變類型比目前正在使用的其他類型的東西。像CustomMouseEvent.MY_CUSTOM_MOUSE之類的東西,然後捕獲它,看看它是否有效。不知道是否使用相同的類型名稱作爲標準類型是一種很好的技術。

相關問題