反正闲着也是闲着,不如就分享个脚本吧。反正在这论坛也白嫖这么久了。
用cc.Graphics组件绘制图案,局限性比较大,出于需要,写了这个脚本。
一个完全独立的脚本,功能也很简单:
霸占一块内存,用来存储每个像素点的颜色分量,
可使用任意颜色绘制矩形,三角形,圆,直线等,并顺便统计每种颜色的像素个数。
擦除图案时,设置画板的颜色为透明色再进行绘制即可。
画完后,getData()就能拿到 Uint8Array 数据,想怎么用就怎么用。
【注】:脚本中使用的坐标系为原点在左上角,X轴向右为正,Y轴向下为正。(cocos:你这是在针对我?)
【再注】:传入参数时,坐标需要分开传入x、y的值,颜色需要分开传入R、 G、 B、 A的值。(我就是要针对你们,cc.Vec2和cc.Color。)
相比cc.Graphics,
1:连续绘制内存占用不会上升;(之前用Graphics做一个类似刮刮乐的功能,不clear()的话内存会越画越多)
2:设置透明度为0的颜色后,再绘制形状,就能起到擦除现有图案的效果;(cc.Graphics需要配合cc.Mask使用)
3:可以统计每种颜色的像素的个数。(就是为了一些像判断某个区域是否被某种颜色完全填满的变态需求准备的)
4:使用起来多了一个操作,需要绘制完成后,再获取像素数据,根据引擎来使用,例如cocos中,把数据赋值给cc.Texture2D再显示出来。
好了,啰嗦完毕。源码中都有注释,几个public方法看一下就知道用了。
DrawingBoard.rar (5.2 KB)