如何通过addEventListener传递语句?

时间:2012-02-06 14:07:04

标签: actionscript

我一直试图通过动作脚本中的addEventListener事件传递参数,例如...

target.addEventListener("pComp", rakeSoil(target));

但我得到错误。

Iv试图谷歌但没有运气:/

如果您这样做,请回复:)

4 个答案:

答案 0 :(得分:4)

目标已作为活动的一部分传递,event.currentTargetevent.target将是您想要的。

如果您想要传递其他内容,请创建自定义事件。将属性添加到自定义事件。

答案 1 :(得分:2)

尝试添加其他方法作为您的事件监听器:

target.addEventListener ("pComp", targetListener);

...

private function targetListener (event:Event):void {

   rakeSoil (event.currentTarget);

}

答案 2 :(得分:0)

这是你想要的:

   {
        var target:EventDispatcher = ...;
        Function rakeSoil = function (e:Event):void 
        {
            // handle target 
        }

        target.addEventListener("pComp", rakeSoil);
    }

rakeSoil是一个第一类函数(或闭包),当调度event时,它将被调用,你可以访问它中的'target'。

编辑:

查看Closure (computer science)

答案 3 :(得分:0)

我总是发现匿名函数比它们的价值更麻烦。我只是遵循标准的事件处理程序代码布局。它更正式,前期需要更多的努力,但没有歧义,当你从现在开始一年后回归它时它会更具可读性(减少头部刮擦持续时间):

//  Target extends EventDispatcher
private var target:Target;

public function listenToTarget();
{
    target = new Target();
    target.addEventListener("pComp", pCompHandler);
}

private function pCompHandler(event:Event):void
{
    target.rakeSoil();
}

虽然现在我更仔细地看一下,为什么你有这个对象做一些Target应该能够自己内部处理的东西?