请教:新手引导限制点击某一按钮如何实现

如题,想要实现一个新手引导功能,要求只可点击界面上某个按钮,其他按钮不响应。

按之前的做法,只需要加一个吞噬触摸事件的遮罩node,
然后判断需要穿透事件的区域,把事件放过去就可以了。

但是,creator的事件传递方式变了,只有该节点的父节点才能收到冒泡过去的触摸事件。
如果在最外层加上一个吞噬事件的node,几乎不能保证是需要接受事件按钮的child,
也就没办法把触摸事件顺利传递到该按钮。

目前能想到的办法就只有在点击到按钮区域时,直接调用按钮的响应方法,
但是这样不方便展示按钮的相关动画。

请问有更好的解决方案吗?
谢谢。

用一个蒙版禁止整个屏幕的点击,在此之上放置一个node,位置与目标按钮相同,把node的点击事件 设置与目标按钮一致

想做新手引导?如楼上所说,用mask,根据引导流程改变mask窗口的位置。或者把所有button自己管理起来

额,懂了,不只有node.on监视事件这种方式,看到cc.eventManager.addListener方法了。。。
之前的做法还是可行的。

//在start 方法中先把整个场景的点击事件暂停
//onload 中不行
var canvasNode = cc.find(“Canvas”);

cc.eventManager.pauseTarget(canvasNode, true); 、
//然后单独恢复只要点击的这个目标按钮
//this.targetBtn 就是你想要点击的
cc.eventManager.resumeTarget(this.targetBtn, false);

后面记得把整个canvasNode resume回来

这种透事件的引导很容易出问题。基本上一出就挂逼的那种。我现在是建一个引导层禁止所有触摸,在这个层上添加一个node来响应触摸。每一步引导把这个节点跟业务层的一个节点绑定(坐标和大小)。在这个节点上绑定脚本去调用业务层的事件。

好处是不容易出莫名其妙的问题(透事件的方式非常非常容易出现莫名其妙的引导事故)。
坏处是1 跟业务层关联,业务层有改动要注意引导这块的变动。2工作量较大。

透事件的方案问题多有很大原因是业务层响应时间不一致,好设备打开面板很快,差设备打开慢,你什么时候透事件非常不好掌握(是不能掌握),如果透的时间早了很可能会被玩家点到其它面板,从而让引导完全挂逼。面板的打开很多时间跟网络也有关系。

是一劳永逸还是天天查不完的BUG你自已选。

2赞

那新手引导的每一步骤都需要增加不一样的mask吗?

要拖动一个物体怎办?新手引导不光只有点击事件,还有拖动事件,你怎么处理拖动?

划定玩家可操作区域 如果玩家点击了可操作区域,可以主动帮她完成拖动回调

不用穿透事件,还得专门写个函数根据触措来移动物体?还需要判断start,move,end ,烦不?所以yangzhu626的方法我觉得只适合点击事件,有拖动还是用穿透,直接使用原业务逻辑方便。

我是一个引导节点,屏蔽所有的触摸. 所有的操作都在引导节点上单独执行引导逻辑.

好方法!

这个不错

请问这个是否可以开源呢?