[英]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.