我有一个按钮类,我希望能够在创建时将一个函数传递给它。该类的代码在这里:
class Button extends PIXI.Sprite
constructor: (image, @f) ->
super()
console.log("Button built!");
@.texture = PIXI.Texture.fromImage(image);
isClicked = false;
setClicked: ->
isClicked = true;
console.log(isClicked);
doThing: ->
if isClicked
isClicked = false;
f();
else
isClicked = false;
构造代码是:
for = function(){
console.log("foo");
}
bar = new Button('bar.png', foo);
f()在构造函数期间存在,但是稍后调用doThing()时,f()为空。我不认为这是范围的事情,因为我已经尝试在构造函数之外直接应用foo()并且它不起作用。或者,对于我想要做的事情,是否有更好的模式? (可以创建附加到通过websocket将代码激发到服务器的函数的按钮,但是稍后会发生这种情况)
答案 0 :(得分:0)
秘密是在我的函数调用f()中包含@ / this。我不知道为什么。有人可以解释一下吗?
doThing: ->
if isClicked
isClicked = false;
@f();
else
isClicked = false;