簡體   English   中英

FLEX,ActionScript:如何調用CustomEvent?

[英]FLEX, Actionscript: how can I invoke a CustomEvent?

我在Flex中創建了一個自定義MouseEvent:

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傳遞參數標簽:

從動作腳本,我正在嘗試這樣的事情,但它不起作用:

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))" />

謝謝

嘗試將回調代碼包裝在一個函數中:

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偵聽器。

另外,您可能會因為未重寫clone方法而收到TypeErrors。 您應該先解決此問題,然后再進行操作。

格爾茨
back2dos

您是否嘗試過將類型更改為當前正在使用的類型以外的其他類型。 諸如CustomMouseEvent.MY_CUSTOM_MOUSE之類的東西,然后捕獲它以查看是否可行。 不知道使用與標准類型相同的Type名稱是否是一種好方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM