如何让屏蔽触摸立即生效?

点屏蔽的时候你用touchstart就行了

button的话是手指离开才会开始执行回调 相当于touchend

你说的是节点树吗?

这些我都懂,问题是如何立即生效

请问在怎样的情况下 需要让一个人在一帧0.08秒的时间内点两个按钮??

设置优先级队列,触摸函数不要立即执行,放入队列中,按优先级排序,每一帧判断队列,如果有元素,则按优先级执行,然后清空队列。这个是最方便也是最清晰的思路。什么多点触摸纠结问题,什么调用先后纠结问题,统统干掉。

没考虑过这个问题,话说,下一帧生效会造成什么样的bug吗?

难道是在游戏很卡的时候,比如帧间隔大于1秒的时候防止bug? 你想的也忒细致了点吧

如果真要卡的这样的程度我是不会去玩的

点击的时候给一个touch_cancel事件可行不?

直接在canvas上拦截,让事件发不出来

这都是因为时序的问题。你可以尝试下这样看可行不。

export default class Mask extends cc.Component 
{

private ban:boolean = false;

 onload()
{
        let node1:any = this.node;

        node1._hitTest = this.hitTest.bind(this);
}

private hitTest (touchLocation:cc.Vec3): boolean
{
        return this.ban;
}

还需要挂上BlockInputEvents组件。

通过控制ban来实现屏蔽。

这种情况我们完全可以使用笨办法就解决了呀,。。。

【页面A】有两个按钮,点击“按钮1”进入【页面B】,点击“按钮2”进入打开【页面C】,当两个手指几乎同时按下这两个按钮时,【页面B】【页面C】会同时弹出,现在希望任一页面打开时,【页面A】触摸屏蔽

使用场景假设:【页面A】是游戏大厅,【页面B】是加载菊花页或战斗页面,【页面C】是战前阵容调整页面

牛逼,问题是creator能实现吗?目前想不到怎么劫持触摸和再派发


可以按照这个试试 做一个变量 按下了就屏蔽 然后分发的时候过滤一下需要的event 如果是处于屏蔽期间就不响应了

加两个布尔变量 点按钮1 变量1=true 事件2(if(变量1))return
点按钮2 事件1 变量2=true(if(变量2))return
返回界面时 变量1=false 变量2=false


这有个单点触摸组件,你这情况直接挂在A的根节点下就完事了,页面A下就只能进行单点触摸了

1赞

这个不错,确实解决问题了

1赞

看来这个问题并不是下一帧的问题,而是多点出发的问题。按钮抬起时才会响应,同时按下两个按钮,依次抬起都会响应到