ZOVEW

中国人死都不怕,就怕不安逸。命都不要,就要安逸。


  • 首页

  • 分类

  • 标签

  • 归档

  • 关于

  • 搜索

Cocos的一个坑:properties属性名慎用下划线

发表于 2018-01-22 | 分类于 Cocos

组件Component中properties定义的字段名以下划线开头的字段不会出现在编辑器中。
下面是这个坑的重现步骤:

1
2
3
4
添加一个属性maxNum = 10,触发编译
回到编辑器中发现不需要显示这个字段
回到代码改为_maxNum = 10,触发编译
现在代码中修改_maxNum=8,运行后会发现_maxNum一直等于10

一开始就定义为下划线开头的属性,是不会被添加到Fire或PreFab文件的。
但是如果是后修改的,文件中就会关联修改这个字段为_maxNum,并始终使用文件中的数值覆盖代码中的数值。

Cocos 利用Mask使触摸穿透Alpha区域

发表于 2018-01-22 | 分类于 Cocos

今天碰到一个圆形图片重叠,还要区分点击的问题。
"圆形图片"
cocos节点默认的on(TOUCH_START等等)事件会判断整个节点的contentSize,
这使得四角没有图像的区域,也会触发事件。
老版本要修改node节点的_hitTest函数,自行判断触摸位置是否为透明。

今天又看了下新版本的源码,发现有判断Mask的逻辑。试着在图片父节点上添加下Mask组件,果然只有Mask区域内的位置会触发事件。

如果是不规则的Mask,修改Mask的Type为IMAGE_STENCIL,SpriteFrame传入一个有Alpha区域PNG图片即可。调整Alpha阈值可控制透明区域的显示,修改Inverted属性反转,省下很多功夫。

更正上面的错误,Mask组件重写了_hitTest方法,里面对于IMAGE_STENCIL点击的判断跟RECT是一样的,也就是说无法判断出不规则区域。目前可以判断不规则区域的点击办法只有Collider了

使用cc.Intersection.pointInPolygon方法,详情可以查阅文档或源码。
碰撞组件文档

"圆形图片"

缺点:Mask组件十分消耗性能,能少用尽量少用。

1…141516
J Zhao

J Zhao

不确认错误,就无法前进。

31 日志
3 分类
43 标签
RSS
GitHub E-Mail
码农里奥
  • 博客旧址-CSDN
© 2021 J Zhao
本站总访问量次 | 本站访客数人
鲁ICP备18013717号-1
主题 NexT.Muse v6.0.0