预期/伪示例:
stage.addEventListener(MouseEvent.CLICK, onClick.someWayToPassParameters(true, 123, 4.56, "string"));
function onClick(e:MouseEvent):void {
trace("Received " + someWayToRetrieveParameters().b/i/n/s + ".");
}
Run Code Online (Sandbox Code Playgroud)
多年(3~4),在每个网站,论坛,博客,无论我在哪里搜索,人们告诉我没有简单的方法来做到这一点.他们通常建议:
将侦听器添加到动态对象,您可以在其中将值设置为额外属性并在函数中引用它(e.target.property/e.currentTarget.property).
并非所有课程都是动态的.例如,它不适用于Sprite.
使用自定义类扩展对象的类以添加属性或仅使其动态化.
你每次都要创建一个全新的tweak课程.
使用匿名函数作为事件处理程序.
没有参考(而且很难看).要删除侦听器以释放资源,您必须使用arguments.callee从函数内部执行此操作.
在事件处理程序中使用参数调用另一个函数.
在事件处理程序调用的位置参数是什么?
将事件处理程序保持在与参数相同的范围内.
违反完全语义混乱.
在接收目标和参数的函数中封装事件处理程序定义和addEventListener调用.
它可以混合范围,但它是一个接近的范围.但是你必须要小心.
......在许多其他建议的解决方法中.
我想要的只是将一个参数传递给事件处理程序,这样我就可以在其函数中使用它,就像任何普通的函数一样!
我要求太多了吗?