之前公司在做一个家园养成类游戏,主要是摆放一些家具,和家具移动、旋转等等,因为家具和房子都是45度角,因此有些大的家具,空白区域会很大,当把前面都做好之后,发现有时候点那些小家具的时候,总会选中那些大家具,因为事件被大家具的透明区域截取掉了,事件没有传到小家具,当时问官方有没有事件穿透,因为这些家具都是兄弟节点,没有冒泡事件,当时官方的回复是没有穿透,最近官方更新了,我也做好了这个透明点击穿透,来此和大家分享下,同时也是大力支持creator。
首先给节点添加事件:
首先把点击的点的坐标转换成局部的,然后创建一个节点矩形区域,下面cc.rectContainsPoint方法判断的是是否点击到此精灵上(官方对于这些都是有例子的),接下来就是我们的主要部分,判断透明:
onLucencyTouch方法就是判断点击的点是否透明,只需要把图片对象传进来即可,而上面setTouchSwallow方法是设置是否穿透用的,官方demo以及api都没有此方法说明,也是在网上找了半天找到的。
总结就是当点到透明区域的时候会return 0,也就是false然后把穿透设置成false然后就事件穿透了,下面的家具就会收到事件依旧判断是否是透明区域等,以此类推。而不是0的时候,设置事件禁止穿透,也就是下面的家具就不会收到事件了。
透明穿透大概就是这样了,第一次写帖子,希望大家能看懂,嘿嘿。
附上项目
assets.rar (59.0 KB)