Cocos2d-x 不规则Button(透明区域不能点击)

先看一个游戏的UI场景,这是个典型的SLG游戏,其中的“魏、蜀、吴”是需要玩家选择的阵营,也就是“魏、蜀、吴”三个不同颜色的区域是三个不同的Button,也就是本文要讲的“不规则Button”。

image

Coco2d-x的Button继承于Widget,Widget的点击触发实际的判断是hitTest方法,Widget的判断只是组件本身的矩形Rect的范围,touchBegin 才会return true,touchMove、touchEnd才会执行。

要实现Button区域的相互覆盖且不相互干扰,就要对其hitTest方法进行重写,判断点击区域的alpha通道是否为0,怎么获取每个点的透明度,就需要在创建Button的时候同时创建一个Boolean的数组用来存储每个点的RGBA中A的值。Image有getData的方法这个方法就可以获得RGBA的值,然后遍历存储每个Alpha通道的值。

当点击发生时,获得点击的坐标,根据坐标获得alpha,然后判断透明度是否为0,当然大家也可以自己设置alpha值。

详细请参见GIT 地址:https://github.com/lede-singularity/GameEffect

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容