button的transition怎么屏蔽

button的transition怎么屏蔽呢,当有事件穿透过来的时候,不想让button发生sprite的transition,这个是怎么控制的呢?

把 transition 设置为 none?

嗯,多谢您的关注。
看api看到这个设置项了,可是我在什么时机设置这个属性呢?
我想如果有个transition的监听事件,如果不想transition的时候直接return就好了,也不影响正常的transition

不太明白你什么意思,你直接设置 none 就可以了呀。

你的应用场景能否说清楚一点。

正常情况下是需要这个transition的,当上层有事件穿透过来的时候,button通过creator面板设置的click事件并没有响应,但是button确发生了transition

能否弄个简单的 demo 给我?我查查看是什么原因。

demo不好呈现啊,涉及到第三方sdk啥的,我再想想吧

如果我在这个button的touchstart事件监听函数里设置button的transition为NONE的话,button还是会transition,那我应该在哪里设置呢?是否有transition的监听事件呢?

没有 transition 的监听的,你再新建个项目弄个小 demo 呗,我实在是没理解你想做的效果是什么。。。

http://forum.cocos.com/t/topic/40508/2
友盟分享的默认面板,通过[UMSocialSnsService presentSnsIconSheetView:rootViewController这种方式调出,生成了两个层级view,一个是遮罩,一个是分享列表,如下:
uiview,//遮罩
umsocialiconactionsheet//分享列表,
rootViewController的view是CCEAGLView的实例cceaglview,分享遮罩view被放到了cceaglview的subview,当点击遮罩的时候事件穿透到了cceaglview主界面下的button。
我有两种思路:
1)一种是你在上个帖子说的想办法吞掉事件,拦截穿透,但我只能拿到view的实例,没办法重载hittest函数,而且如果我新建一个ios项目模拟这个弹出分享面板的话,事件是不穿透到主界面的,不知到为什么在cocos这里就穿透了。cocos安卓项目这种情况就不会有事件穿透。
2)另一种思路是:我在js端中通过在button的touchstart事件中,查看是否有分享面板弹出了,如果弹出了,就不响应button的事件,但是没有办法阻止button的transition。

@zilong

你试着弹出分享框的时候,把 button 的 interactable 属性设置为 false 呢?

interactable改变的话,button的图片就会发生变化,而且有两组互斥变化的按钮,在遮罩下会不互斥,变为同一个状态。
我就想怎么能控制interactable不变呢?

还是希望你能整个 demo 重现你的问题,你不一定要集成 sdk,你可以模拟事件穿透,还有两组按键互斥。。。

实在是不好重现,原始项目中的按钮相当于穿透后,只响应了touchdown事件,没有响应touchup事件,按钮图片变化没有恢复

怎么可以让button的interactable不变呢

穿透过来的事件,只有interactable为true的按钮会变化,变为false。为false的不会变为true。

你试试别添加 touchup 事件,而是直接注册 button 的 clickEvents呢? 你能否贴一点代码,让我知道你大概是什么情况?

安卓的效果很完美,事件没有穿透。
就是游戏主界面的按钮上有友盟分享遮罩,遮罩没有拦截点击,导致按钮的interactable为true的发生了变化,transition为SPRITE模式,按钮的click事件并没有触发,按钮的touchstart事件触发了,touchup事件也没有触发。

你可以通过 polyfill 的方式,把 button 的修改 transition 的代码给修改掉。 通过修复 cc.Button.prototype 里面的方法

嗯,我通过在xcode中给友盟的遮罩加了一个button用来遮挡解决了事件穿透,原来的情况是touchstart事件可以穿透,touchend和click事件被拦截了,现在都被拦截了,游戏主界面的按钮接受不到事件了。
通过您的关注提示了解了很多,非常感谢:)