范例集合里面的关于ToggleParticle的一个问题。

晴朗哥
Sat, 15 Oct 2016 11:07:40 +0000

这个ToggleParticle中ParticleControl的js有个小错误。在用空格触发的监听事件中，target 应该是 self.node, 范例里面是self.
除此之外我有一个问题。

这是范例里面的玩家输入事件监听（改成了鼠标mousedown触发）：
setInputControl: function () {
var self = this;
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseDown: function(event) {
if (event === mousedown) {
self.toggleParticlePlay();
}
},

    }, self.node);
},

然后我用了另外一种常用的监听
setInputControl: function() {
var self = this;
this.node.on(‘mousedown’, function(){
this.toggleParticlePlay()
},this);
},

我发现在玩家输入事件监听中，如果在mousedown回调函数中还是用this而不是self,那么this就是全局作用域，而self是ParticleControl的节点作用域。这个没有什么问题。

但是如果用第二种常用的监听， 那么self 和 this在mousedown回调函数中都还是指向ParticleControl本身。也就是说var self = this;这句话就没有作用了。请问这是为什么啊？

阅读整个主题