点屏蔽的时候你用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下就只能进行单点触摸了
这个不错,确实解决问题了
看来这个问题并不是下一帧的问题,而是多点出发的问题。按钮抬起时才会响应,同时按下两个按钮,依次抬起都会响应到