触摸吞噬问题

普通的精灵
可以通过setSwallowTouches设置成触摸吞噬

而MenuItem 默认就是 触摸吞噬的
有没有方法,把MenuItem 设置成不是触摸吞噬的,

即,两个MenuItem重叠的话,点击重叠部分,同时触发两个回调函数

自己增加一个setSwallowTouches

不能用的,

/**
* Constructor of cc.Menu override it to extend the construction behavior, remember to call “this._super()” in the extended “ctor” function.
* @param {…cc.MenuItem|null} menuItems
*/
ctor: function (menuItems) {
cc.Layer.prototype.ctor.call(this);
this._color = cc.color.WHITE;
this.enabled = false;
this._opacity = 255;
this._selectedItem = null;
this._state = -1;

    this._touchListener = cc.EventListener.create({
        event: cc.EventListener.TOUCH_ONE_BY_ONE,
        swallowTouches: true,
        onTouchBegan: this._onTouchBegan,
        onTouchMoved: this._onTouchMoved,
        onTouchEnded: this._onTouchEnded,
        onTouchCancelled: this._onTouchCancelled
    });

看见了么 增加一个方法调用这个listener的setSwallowTouches就可以了

话说这些控件压根就没必要用, 自己定制开发的使用起来强多了

我知道在这儿加 。。

你试过可以用吗,,

我试了是没用的,,,,

MenuItem是放在Menu里面的,
MenuItem被点中是有选中状态的,
只是改swallowTouches 应该是没有用的,

我还真没试过那个东西, 按钮都是我自己写的基类。。 原理应该是一样的吧 会没效果?

下次,我也得考虑自己学按钮了,,,
偷懒还是不行啊

我看了一下源码 , 我觉的按照我说的 是有效的, 当然你不能把这两个menuItem放在同一个ccMenu中, 要写2个CCMenu(这是cocos2dx自己就是这样设计的, 一个CCMenu只有1个响应的按钮), 这样看源码是有效的

menuItem都不放在一个menu里面
那多烦啊,,

基本上也就判定 判定触摸吞噬不可实现了

为了实现你的需求 就要写2个menu啊 别说2个了, 1个界面10个menu我都见过, 所以说这玩意设计的很XXXX

你难道没写过 1个按钮在某张图 下面 一个按钮在某张图上面的 例子? 按照这个设计1个menu能实现?

:11::11::11::11::11:其实代码设计上就应该是new BtnImg(“XXXX.png”).addto(this).setTap(function(){“click!!!”}); 就可以完美的解决 问题的, 也不知道cocos2dx控件的设计者 搞那么多类接口用起来那么麻烦干什么
有时候真想狂喷他们

你说得情况,虽然有碰到过
但是比较少的,,

而我这个是普遍需要处理的
所以每个menuitemimage都有一个menu就特别繁琐
而且不知道menu的开销会不会很大什么的

而cocos设计上的话,,,,可能menu本意上就只是作为工具条上的按钮
而不是普遍意义的按钮吧,,,

那你就在他上面 封一层api吧, 一个方法 里面创建一个menu+一个menuitem 然后返回menu。。。 这样调用你自己的方法。 开销应该不至于, 如果你不想自己写控件的话

或者你试试cccontrolButton之类的 不过我没用过