gpt4 book ai didi

flash - 你如何将变量绑定(bind)到as3中的函数

转载 作者:行者123 更新时间:2023-12-02 07:47:04 24 4
gpt4 key购买 nike

我有这个代码:

for each(var tool in tools){
tool.addEventListener(MouseEvent.MOUSE_DOWN, function(){
trace(tool); //Always the last tool
});
}

如何将工具的值绑定(bind)到函数以便在回调时可以访问它?

最佳答案

您必须在函数内部使用函数才能正确绑定(bind)作用域。这有点像 AS3 中的 hack。如果可以的话,最好不要掉进那个兔子洞。不过,如果必须...

for(var tool:Tool in _tools){
var getHandler(scope:Tool):Function{
var t:Tool = scope;
return function(e:MouseEvent):void{trace(t)}
}
tool.addEventListener(MouseEvent.CLICK, getHandler(tool));
}

编辑:当然,您需要在处理程序中使用的任何变量也应该传递到 getHandler 中……因此,您不仅要接受范围参数,还要传递您的 ID、计数、当前状态,或其他。

EDIT2:但是问问自己这个问题。您将如何删除该事件监听器?这就是我说要完全避开这个兔子洞的最大原因。这是可能的,但它通常比使用比 lambda 函数更面向对象的方法来解决这个问题更麻烦。

关于flash - 你如何将变量绑定(bind)到as3中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6283126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com