![](/img/trans.png)
[英]How can I target a Flex 3 datagrid in MXML from Actionscript?
[英]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.