我一直试图通过动作脚本中的addEventListener事件传递参数,例如...
target.addEventListener("pComp", rakeSoil(target));
但我得到错误。
Iv试图谷歌但没有运气:/
如果您这样做,请回复:)
答案 0 :(得分:4)
目标已作为活动的一部分传递,event.currentTarget
或event.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'。
编辑:
答案 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应该能够自己内部处理的东西?