我理解如何在Image接收MouseMove事件时以声明方式指定要调用的方法。
<mx:Image id="oneCent" mouseMove="dragIt(event, 1);" />
如何在Flex / AS3中以编程方式执行此操作?
编辑:感谢您的评论。这是我到目前为止所做的:myImage = new Image(); myImage.id = "oneCent"; myImage.addEventListener(MouseEvent.MOUSE_MOVE, dragIt);
上面的代码片段将dragIt方法分配给myImage的MOUSE_MOVE事件。到现在为止还挺好。如何将第二个参数传递给对dragIt的调用?
答案 0 :(得分:2)
oneCent.addEventListener(MouseEvent.MOUSE_MOVE, dragIt);
...
function dragIt(event:MouseEvent):void
{
...
答案 1 :(得分:2)
你无法直接传递第二个参数 - 所以将它添加到myImage:
myImage = new Image();
myImage.id = "oneCent";
myImage.num = 1;
myImage.addEventListener(MouseEvent.MOUSE_MOVE, dragIt);
然后在dragit函数中:
function dragIt(event:MouseEvent):void {
trace("PARAM =", event.target.num, event.target.id);
}
event.target 自动成为图片的引用
答案 2 :(得分:1)
您无法将额外参数传递给事件处理程序。在幕后,Flex编译器生成的代码如下所示:
private function generatedMouseMoveHandler(event:MouseEvent):void
{
dragIt(event, 1);
}
在MXML中创建的任何事件处理程序都将像这样包装。这就是为什么你可以引用一个名为event
的变量。
答案 3 :(得分:0)
oneCent.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent):void{
...
});
如果您稍后在代码中不使用dragIt()
,那会更好。