Objc中触摸处理阻塞时消息派送的问题
2015-12-16 07:39
218 查看
在游戏场景中添加了touchBegan的处理:
如果玩家正在和NPC对话,则继续交谈.一切正常.
但是如果advanceTextOrHide被阻塞一段时间再返回的话,下一次点击屏幕却无法进入touchBegan回调的处理中.只有第二次点击屏幕才会进入.所以玩家必须多点击一次屏幕,虽然只是一点小瑕疵,但也是不能忍受的 ;[
问题是为什么第一次点击后没有激活回调?代码流跑道哪里去了?答案是代码跑到touchEnded里面去了!
我的推测是当touchBegan被阻塞一段时间后,与之对应的touchEnded不再被调用.而是等到下一次点击屏幕时才被”补上”.等于是想把它丢掉又不能丢,得找个机会把它补上才行.
-(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event{ if ([self isTalking]) { [_chatBox advanceTextOrHide]; return; } //其他代码
如果玩家正在和NPC对话,则继续交谈.一切正常.
但是如果advanceTextOrHide被阻塞一段时间再返回的话,下一次点击屏幕却无法进入touchBegan回调的处理中.只有第二次点击屏幕才会进入.所以玩家必须多点击一次屏幕,虽然只是一点小瑕疵,但也是不能忍受的 ;[
问题是为什么第一次点击后没有激活回调?代码流跑道哪里去了?答案是代码跑到touchEnded里面去了!
我的推测是当touchBegan被阻塞一段时间后,与之对应的touchEnded不再被调用.而是等到下一次点击屏幕时才被”补上”.等于是想把它丢掉又不能丢,得找个机会把它补上才行.
相关文章推荐
- Objc中触摸处理阻塞时消息派送的问题
- 普法知识(37):如何追责?
- 大龄程序员的未来在何方
- 【C++ STL应用与实现】22: 函数组合之1:如何使用std::bind (since C++11)
- Hadoop Kernel tunning
- 数据刷新
- 自定义不等高cell的storyboard方法
- CSS学习笔记
- IOS开发中的CGFloat、CGPoint、CGSize和CGRect
- 深入探讨 Java 类加载器
- 闪屏(Splash)
- 升级ESXi Host
- 升级ESXi Host
- POJ 2828 buy tickets 线段树
- how to solve: ld: library not found for -lXYZ
- POJ 3280 解题报告
- {Refractoring - Improving the design of existing code} - 1999
- PMC推出Smart系列解决方案 提供高效数据中心连接
- PMC推出Smart系列解决方案 提供高效数据中心连接
- Leetcode 经典题目题解