creator怎样屏蔽多点触摸?

我在IOS原生代码中也看到这句了,但是我现在做的是H5的

这问题现在很严重,请问有什么办法可以在安卓ios端屏蔽呢

你自己搞一个状态就好了 有按下的按钮存在 就不再让下一个按钮被按

关键基本每个界面都是许多toggle和button、界面监听处理,不是一两个的问题,如果这样的话我每个界面都得监听start、end、cancel、move事件了,唉看了目前用ccc来做应用还是有些作死啊

只要在cc.Node上做处理就行了,你在实例node上做处理当然工作了大了

/***********************Node*************************/
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++;
                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++;
            }

            if (this._canTouch) {
                __dispatchEvent__.call(this, event);
            }

            break;
        case 'touchend':
            if (this._canTouch) {
                this._canTouch = false;
                cc.Node.touchNum--;
                __dispatchEvent__.call(this, event);
            }
            break;
        case 'touchcancel':
            if (this._canTouch) {
                this._canTouch = false;
                cc.Node.touchNum--;
                __dispatchEvent__.call(this, event);
            }
            break;
        default:
            __dispatchEvent__.call(this, event);
    }
};
/***********************Node*************************/
3赞

谢谢,我先试试

你好,经过测试,1.多点如果在反复快速的点击this._canTouch这个变量未能重置2.这里监听所有事件,滚动view都会失去响应。。。

1的问题没测试出来2333
2我这里scrollView滑动的好好的23333

1:点击的是一个界面上两个按钮来回快速点击,两个按钮功能一个是打开一个界面,一个是切换当前界面
2:我用的是ccc的pageview,加载上面代码web端和安卓端都没法滑动翻页了…

你说的这几个问题我本地测试好像都正常。。。我是1.5.2的

我也是1.5.2的。。。。scrollView滑动是好好的,pageview确实有问题。上面点击我打印了日志看了是有一次没有收到end或者cancel就over了

这个方案一次只能点一个node,scrollView、pageView里面有节点注册了点击事件就不好使了:sweat_smile:

好使了,快踩踩坑

在公司项目里发现一个 touch事件的bug ,在instantite 一个prefab的时候, 如果prefab稍微大点,在canvas上注册的touch事件 就会只监听到 touch start ,丢失 touchend 和touchcancel ,希望官方 排查一下

touch 的事件注册的时候,useCapture 设置为true

这个如果我一直按着节点不放,如果有其他的逻辑导致节点destroy或者active为false的话,touchNum就不会再减回去了。我后来做了点修改。希望有所改善。
var onPostActivated = cc.Node.prototype._onPostActivated;
cc.Node.prototype._onPostActivated = function (active) {
if(!active && this._canTouch){
this._canTouch = false;
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–;
}

__onPreDestroy__.call(this);

};

引擎应该支持多点开关。我也看到其它引擎也支持多点开关。但我还是想问下为什么需要屏蔽多点触摸?

我也想问,为什么你们要把cocos2dx android 的多点触摸给屏蔽了,ios的又没屏蔽。。。 而且好像支持三个手指了?
我记得以前是支持很多手指的(难道我记错了)。

在电脑上的touchId竟然是undefined。。。