问题系列:CocosCreator 按钮可以同时多点的问题

我的CocosCreator 版本是1.9.3的,然后这个问题我在网上百度了,官方给出了node的一个 方案:

这个截图来自 http://forum.cocos.com/t/creator/45139这里

这个 方法我没有试,因为我这里主要是button的同时多点的问题,小则造成打开了两个窗口,大则造成界面显示错误、报错。

我看了button的源码,里面一共监听了相关的事件有四个:_onTouchBegan、_onTouchMove、_onTouchEnded、_onTouchCancel,然后我将多点会触发的顺序列了下来:

 操作可能情况
1.两个按钮同时点击同时放开began1->began2->touchend1->touchend2
2.两个按钮依次点下,同时放开

(1).began1->began2->touchend1->touchend2

(2).began1->began2->move1->cancel1

3.两个按钮同时点击,依次放开(21)

(1).began1->began2->touchend2->(0.5s后)->touchend1

(2).began1->move1->cancel1->began2

4.两个按钮同时点击,2滑动后同时放开began2->began1->cancel2->move2->move1
5.两个按钮依次点下(12),2滑动后同时放开 

(1) began1->began2->cancel1->move1->move2->move1~一直轮替

(2) began1->move1->cancel1->began2->move2->move1~一直轮替

开始想的办法是:写一个新的继承cc.Button的类NewButton,然后在类中重写touchend方法:

_onTouchEnded(event){
        if(!data.btnClicked){  //按钮做0.1s间隔响应      
            super._onTouchEnded(event);
            this.scheduleOnce(()=>{
                data.btnClicked = false;
            },0.1);

        }else{
            super._onTouchCancel();
        }
        
    }

以上方法发现,只要按钮事件触发了move,就不会再出发touchend了,所以会出现几个问题:

第四、第五点和第三点的第二小点,第二的第二小点,有一个按钮会一直是灰色不会变回明亮;

然后第三的第一小点,在0.1s后再松开按钮也会造成两个按钮的事件都同时响应了。

开始我是想在_onTouchMove中调用_onTouchCancel,这样颜色就会恢复,但是第三点的两个问题还是没能解决,第二的第二小点的问题依旧没能解决 。

后来我打算在_onTouchBegan方法中就开始响应事件,开始我以为这个这样会导致按钮颜色不变化的问题,但是发现这个办法其实已经比较好了,不用改来改去。

_onTouchBegan(event){
        if(!data.btnClicked){  //按钮做0.1s间隔响应
            data.btnClicked = true;
            super._onTouchBegan(event);
            this.scheduleOnce(()=>{          //间隔一秒响应,会有颜色变化 
                super._onTouchEnded(event);
                data.btnClicked = false;  //这是一个全局变量
            },0.1)
        }
    }

这样写完后我试了下暂时没有什么问题,有问题我再回来改,现在暂时就这样写了 ,对了监听下按钮销毁的方法data.btnClicked = false; 把全局变量设为初值。避免销毁的时候没有执行定时器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值