cocos creator 屏蔽多点Touch
·
场景 :当页面中有两个可以点击的事件时 同时点击 页面或出现错乱 。 重写点击事件
cc.Node.maxTouchNum = 1;
cc.Node.touchNum = 0;
var __dispatchEvent__ = cc.Node.prototype.dispatchEvent;
cc.Node.prototype.dispatchEvent = function (event) {
switch (event.type) {
case 'touchstart':
if (cc.Node.touchNum < cc.Node.maxTouchNum) {
cc.Node.touchNum++;
cc.Node.touchNum = cc.Node.touchNum > 1 ? 1 : cc.Node.touchNum
this._canTouch = true;
__dispatchEvent__.call(this, event);
}
break;
case 'touchmove':
if (!this._canTouch && cc.Node.touchNum < cc.Node.maxTouchNum) {
this._canTouch = true;
cc.Node.touchNum++;
cc.Node.touchNum = cc.Node.touchNum > 1 ? 1 : cc.Node.touchNum
}
if (this._canTouch) {
__dispatchEvent__.call(this, event);
}
break;
case 'touchend':
if (this._canTouch) {
this._canTouch = false;
cc.Node.touchNum--;
cc.Node.touchNum = cc.Node.touchNum < 0 ? 0 : cc.Node.touchNum
__dispatchEvent__.call(this, event);
}
break;
case 'touchcancel':
if (this._canTouch) {
this._canTouch = true;
cc.Node.touchNum--;
cc.Node.touchNum = cc.Node.touchNum < 0 ? 0 : cc.Node.touchNum
__dispatchEvent__.call(this, event);
}
break;
default:
__dispatchEvent__.call(this, event);
}
};
var __onPostActivated__ = cc.Node.prototype._onPostActivated;
cc.Node.prototype._onPostActivated = function (active) {
if (!active && this._canTouch) {
this._canTouch = false;
cc.Node.touchNum--;
cc.Node.touchNum = cc.Node.touchNum < 0 ? 0 : cc.Node.touchNum
}
__onPostActivated__.call(this, active);
};
var __onPreDestroy__ = cc.Node.prototype._onPreDestroy;
cc.Node.prototype._onPreDestroy = function () {
if (this._canTouch) {
this._canTouch = false;
cc.Node.touchNum--;
cc.Node.touchNum = cc.Node.touchNum < 0 ? 0 : cc.Node.touchNum
}
__onPreDestroy__.call(this);
};
更多推荐


所有评论(0)