【iOS-Cocos2d游戏开发之六】对触屏事件追加讲解,解决无法触发ccTouchMoved事件[重要!

简介:

 上一章节中介绍了,如何利用两种方式对用户触屏进行监听,那么今天要重点讲解一个问题;

要讲的问题主要是在使用注册监听(事件分配方式监听触屏)中的问题,上一章节中说过,此种方式首先要注册:如下代码:

 

  1. //注册独立触摸事件  
  2. [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];  

 

那么如果多个注册监听的话,可以根据优先级(priority)参数进行设置,此参数的值越大,优先级越低,假设有XX与YY注册了监听,如果XX优先级>YY, 那么首先会进入XX的监听函数;

使用上面的方式进行监听的话,会进行监听以下这几个事件:

 

  1. - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event  
  2. {  
  3.     return NO;  
  4. }  
  5.   
  6. - (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event  
  7. {     
  8. }  
  9.   
  10. - (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event  
  11. {  
  12.   
  13. }  

 

如果XX中的ccTouchBegan函数中返回Yes的话,就不会响应其他监听的(YY)中重写的监听函数;这个上一章节中介绍过;但是要说的也正是这里,如果你想要XX与YY都监听事件,那么两个都可以在ccTouchBegan中返回NO,但是如果你想在处理YY或者XX中的ccTouchMoved移动事件函数中的话,你会发现XX与YY都不会响应其函数,原因是,当你retrun NO;的时候虽然执行了ccTouchBegan与return之间的代码,但是你return NO其实就是告诉cocos2d放弃此次事件处理,让cocos2d继续将触屏事件分配给其他注册过的类去处理监听,直到结束或者cocos2d获取到return true为止;

那么解决的方案:比如你想监听YY类中的ccTouchMoved事件,那么为了不影响XX中的监听ccTouchBegan事件,你应该让XX类在注册监听的时候让其优先级调整高于YY类,并且XX类中ccTouchBegan函数return NO,那么当用户触屏后,首先进入XX类中处理事件,然后会(因为XX类return NO)进入YY类,那么在YY类的ccTouchBegan函数中因为return YES;这样cocos2d就能响应ccTouchMoved函数了;

如果说你想让XX与YY类都响应ccTouchMoved函数,至少我利用此种事件分配的方式无法实现,不知道是不是cocos2d的1.0版本遗留的BUG还是其他原因,今天遇到所以拿出来跟大家分享;

OK,该睡觉了,晚安大家~撒乐个油!~~~~~~





本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/634675,如需转载请自行联系原作者

目录
相关文章
|
存储 缓存 算法
iOS 常见触发离屏渲染场景及优化方案总结
iOS 常见触发离屏渲染场景及优化方案总结
849 0
iOS 常见触发离屏渲染场景及优化方案总结
|
iOS开发
iOS开发 - touchBegan事件判断点击的位置在View上还是在View的子View上
iOS开发 - touchBegan事件判断点击的位置在View上还是在View的子View上
266 0
iOS开发 - touchBegan事件判断点击的位置在View上还是在View的子View上
|
Android开发 iOS开发
关于监听微信浏览器返回按钮事件处理安卓IOS通用
关于监听微信浏览器返回按钮事件处理安卓IOS通用
328 0
关于监听微信浏览器返回按钮事件处理安卓IOS通用
|
iOS开发
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
134 0
|
iOS开发
iOS之UIPickerView滚动事件
在开发中,我们会用到pickerview滚动条,那如何监听到pickview的滚动事件呢,之前开发就遇到过一个问题,快速滑动秒选确定按钮,地址显示不对的问题,解决办法为在点选确定辅助按钮的时候判断当时的pickerView是否正在滚动,如果在滚动则不允许触发点选确定后的其他操作。
364 0
iOS之UIPickerView滚动事件
|
iOS开发
iOS事件响应控制(二)
iOS事件响应控制
115 0
iOS事件响应控制(二)
|
iOS开发
iOS事件响应控制(一)
iOS事件响应控制
163 0
iOS事件响应控制(一)
Ios8之后, 定位的delegate不能触发的问题
Ios8之后, 定位的delegate不能触发的问题
101 0
|
2天前
|
开发框架 数据可视化 Java
iOS开发-SwiftUI简介
iOS开发-SwiftUI简介
|
10天前
|
IDE 开发工具 Android开发
安卓与iOS开发对比:平台选择对项目成功的影响
【9月更文挑战第10天】在移动应用开发的世界中,选择正确的平台是至关重要的。本文将深入探讨安卓和iOS这两大主要移动操作系统的开发环境,通过比较它们的市场份额、开发工具、编程语言和用户群体等方面,为开发者提供一个清晰的指南。我们将分析这两个平台的优势和劣势,并讨论如何根据项目需求和目标受众来做出最佳选择。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解每个平台的特性,并指导你做出明智的决策。