按钮触摸事件如何禁止

creator中如何让绑定了touch事件的按钮不响应此事件?搜索之前的帖子发现cocos2d中用的setTouchEnabled(false),creator中有类似功能的函数么?翻看api没找到。多谢

http://www.cocos.com/docs/creator/scripting/events.html

这是button的事件注册,
_registerEvent: function () {
this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this);
this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMove, this);
this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this);

    this.node.on(cc.Node.EventType.MOUSE_ENTER, this._onMouseMoveIn, this);
    this.node.on(cc.Node.EventType.MOUSE_LEAVE, this._onMouseMoveOut, this);
},

所以关闭就是这样的

onLoad: function () {
    var button = this.getComponent(cc.Button);
    this.node.off(cc.Node.EventType.TOUCH_START, button._onTouchBegan, button);
    this.node.off(cc.Node.EventType.TOUCH_END, button._onTouchEnded, button);
},

已经测试成功

感谢您的解答,这个是注册和取消事件。我的场景是不想取消,因为在不同的js组件进行的操作,我只是想同对按钮的操作使其不接受事件响应。

没理解你说的意思,能举个例子吗?

我在主场景放了一个常驻节点,节点下放了一些按钮,按钮加了js组件(用来按钮变形和点击音效事件,翻页事件),这些按钮在主场景不想显示,但是所有其他场景需要显示。我需要一个逻辑,当在主场景时隐藏这些按钮并使其不能接受事件,因为隐藏用的opacity=0,但是还在那个位置,还可以接受点击。当进入其他场景后,显示这些按钮,并接受事件。

那你试试,在主场景的时候 button.node.active = false;在其他场景的时候 button.node.active = true;
或者直接更改常驻节点的active,常驻节点.active = false;

而且你到底是要隐藏和禁用按钮啊还是只禁用啊?你说setTouchEnabled我以为你是只想禁用触摸呢

button.node.active=false这个好使, 这样设置后,通过js组件给按钮添加的变形和音效的touch事件就不生效了,同时也不现实了,达到我的隐藏和不响应事件的目的,多谢哈

不客气,active就是节点的激活状态,为false时就好像场景里没有这个节点一样

恩学习了,项目比较急,边学边弄,遇到问题,看API和搜索论坛后,如果没弄明白,只好及时论坛求助了