像素触摸的大致思路都是一样的,无论是-x中的版本还是html5中。
第一步:获得纹理的像素信息。
第二步:根据图片的像素信息获得触摸(点击)点上的像素信息。
第三步:触摸判断,是否透明。透明则不处理,不透明则触摸到了。
具体的实现思路:
目前我们基本上都是使用UIButton这个类,所以我只实现了这个的简单封装,其他的都类似。
第一步:修改Button的onTouchBegan函数,截取开始的触摸事件,在这个地方实现是否为透明区域的判断处理。
第二步:为Sprite添加一个读取纹理像素信息的方法
第三步:给UIButton添加方法,设置是否实用像素触摸。
使用方法:
在创建按钮的地方,设置按钮是否使用像素触摸即可。
具体实现:
cc.Sprite.prototype._pixels = [];
cc.Sprite.prototype.readPixels = function(x,y){
var w = this.width;
var h = this.height;
if(!this._pixels || this._pixels.length == 0){
var canvas = cc.newElement("canvas"); // 创建一个新的元素节点
canvas.width = w;
canvas.height = h;