Flex:如何以编程方式将方法分配给Image.MouseMove事件?

时间:2009-01-11 02:30:12

标签: flex actionscript-3

我理解如何在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的调用?

4 个答案:

答案 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(),那会更好。