Objc中触摸处理阻塞时消息派送的问题

简介:

在游戏场景中添加了touchBegan的处理:

-(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
    if ([self isTalking]) {
        [_chatBox advanceTextOrHide];
        return;
    }
    //其他代码

如果玩家正在和NPC对话,则继续交谈.一切正常.

但是如果advanceTextOrHide被阻塞一段时间再返回的话,下一次点击屏幕却无法进入touchBegan回调的处理中.只有第二次点击屏幕才会进入.所以玩家必须多点击一次屏幕,虽然只是一点小瑕疵,但也是不能忍受的 ;[

问题是为什么第一次点击后没有激活回调?代码流跑道哪里去了?答案是代码跑到touchEnded里面去了!

我的推测是当touchBegan被阻塞一段时间后,与之对应的touchEnded不再被调用.而是等到下一次点击屏幕时才被”补上”.等于是想把它丢掉又不能丢,得找个机会把它补上才行.

相关文章
|
15天前
|
存储 Java Linux
Android系统获取event事件回调等几种实现和原理分析
Android系统获取event事件回调等几种实现和原理分析
31 0
|
6月前
|
API
27 QT -消息机制与事件总结
27 QT -消息机制与事件总结
42 0
|
7月前
|
Windows
|
11月前
|
消息中间件 Windows
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(一)
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息
|
11月前
|
消息中间件 Windows
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(四)
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息
|
11月前
|
消息中间件 Windows
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(二)
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息
|
11月前
|
消息中间件 Windows
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(三)
Windows消息,消息循环的处理,消息队列,键盘消息,鼠标消息,定时器消息(三)
【EventBus】事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )(二)
【EventBus】事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )(二)
108 0
|
Android开发
【EventBus】事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )(一)
【EventBus】事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )(一)
160 0

热门文章

最新文章