现在Layer层的onEnter方法里create一个listener,指明事件为单点触摸,然后声明三个触摸事件
onEnter : function () {
this._super();
var listener = cc.EventListener.create({
event : cc.EventListener.TOUCH_ONE_BY_ONE,
//是否吞没事件
swallowTouches : true,
onTouchBegan : this.onTouchBegan,
onTouchMoved : this.onTouchMoved,
onTouchEnded : this.onTouchEnded,
});
cc.eventManager.addListener(listener, this.getChildByTag(123))//123是精灵的tag
},
然后实现这三个触摸回调函数
onTouchBegan : function (touch, event) {
cc.log("TouchBegan");
//获取点击到的精灵
var target = event.getCurrentTarget();
//世界坐标转换为本地坐标
var locationInNode = target.convertToNodeSpace(touch.getLocation());
//获取精灵大小尺寸
var size = target.getContentSize();
//创建精灵的边界
var rect = cc.rect(0, 0, size.width, size.height);
//判断是否点击到精灵
if (cc.rectContainsPoint(rect, locationInNode)) {
cc.log("Touched");
//点击到向下传递,调用onTouchMoved
return true;
}
//没点击到,终止传递
return false;
},
onTouchMoved : function (touch, event) {
cc.log("TouchMoved");
//获取点击到的精灵
var target = event.getCurrentTarget();
//获取下一帧的点击坐标
var delta = touch.getDelta();
//移动精灵
target.x += delta.x;
target.y += delta.y;
},
onTouchEnded : function (touch, event) {
},