开发环境:
COCOS2D-JS-3.6
COCOS-IDE-1.2
今天在练习点击事件的时候发现无论如何修改代码都无法在模拟器中指定Label上获取点击事件。
对着Demo重新写了一个简单测试代码,并且输出相关变量。测试发现,模拟器无论全局坐标还是相对坐标都会偏移20PX
最明显的就是点击模拟器左下角边框,返回的全局坐标竟然是(0,20)。
而同样的代码在浏览器中测试就一点问题都没有。
简单构造函数如下。
var TestLayer = cc.Layer.extend({
sprite:null,
ctor:function () {
this._super();
var size = cc.winSize;
var label = new cc.LabelTTF('Hello Cocos2d-JS');
label.x=100;
label.y=100;
this.addChild(label);
var BtnListener = cc.EventListener.create({
event:cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: true,
onTouchBegan: function (touch, event) {
var target = event.getCurrentTarget();
var sx =target.getContentSize();
var rect = cc.rect(0,0,sx.width,sx.height);
var ttt = target.convertToNodeSpace(touch.getLocation());
cc.log("点击相对坐标"+ttt.x+" "+ttt.y);
cc.log("判定坐标"+cc.rectGetMinX(rect)+" "+ cc.rectGetMaxX(rect)+" "+ cc.rectGetMinY(rect) +" "+cc.rectGetMaxY(rect)) ;
if (cc.rectContainsPoint(rect, ttt)){
cc.log('catch');
}
return false;
}
});
cc.eventManager.addListener(BtnListener, label);
return true;
}
});
测试控制台截图(1、2为IDE,3为Chrome)