监听事件官方文档的问题

官方文档中有这样一段。
this.node.on(‘mousedown’, function ( event ) {
this.enabled = false;
}.bind(this));

// 使用第三个参数
this.node.on(‘mousedown’, function (event) {
this.enabled = false;
}, this);
这两个有什么区别?其中this.enabled = false;是做什么的?

没有区别,都是指定函数里的this,你可以选择你喜欢的方式

不启用当前组件

不启用当前组件,可是这个方法里面的东西还是会触发啊?

我在里面写了this.enabled = false,但是函数依然触发了,这是为什么?

哪个函数触发了?

this.node.on(‘mousedown’, function (event) {
this.enabled = false;
}, this);
比如我给一个节点绑定了鼠标按下的事件。
然后里面写了this.enabled = false;
但是他还是会响应按下的事件啊?
还是我理解错了,这个启用组件起的是什么作用?

鼠标按下事件是node监听的,所以会触发,你只是关闭了组件,没有关闭node

比如你有一个a.js,挂载到n这个node上,你在a.js里调用

this.node.on(‘mousedown’, function (event) {
this.enabled = false;
}, this);

这里this是a这个组件,this.node就是a组件所在的节点,这里是n

以上代码是给n这个节点添加事件,当鼠标按下的时候是n这个节点响应,然后执行回调,关闭a这个组件

还是没有理解。:joy:
比如按照你这样说,点击后不启用a这个组件,不就是关闭了a.js么?那这样当我再此点击的时候,为什么还会执行?
能不能举一个应用了不启用组件的例子?

可能我说的不够清楚,你是给n这个node添加了事件,只要a执行过一次,那么node就添加了事件,除非你手动关闭,否则node会一直响应你添加过的事件,所以之后不管你的a组件有没有启用,node都会响应你添加过的事件,因为n还是激活状态,如果要想n这个node不响应事件,要调用node.off

哦。我懂了。谢谢啊:grin:

不客气哦:grin:

我再问一哈,this.enabled = false 和 this.node.active = false都能使该node所挂载的组件关闭,而前者不会使node隐藏,后者会隐藏node。这样理解对吗?

一个node上可能会有多个组件,this.enabled = false是关闭当前组件,并不影响node和node上的其他组件,node.active = false就是关闭node以及node上的所有组件

嗯,了解,理清关系了。