开启多点触摸

news/2025/2/21 4:19:57/

一.ios上的多点触摸

        现在很多游戏都有多点触摸,它能让玩家有更好的体验。
        要开启多点触摸,必须在工程的ios目录下的AppController(AppDelegate)文件中添加代码。

        在didFinishLaunchingWithOptions函数中添加 [__glView setMultipleTouchEnabled:YES]; 即可。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{// Init the EAGLViewEAGLView *__glView = [EAGLView viewWithFrame: [window bounds]pixelFormat: kEAGLColorFormatRGB565depthFormat: GL_DEPTH24_STENCIL8_OESpreserveBackbuffer: NOsharegroup: nilmultiSampling: NOnumberOfSamples: 0];// 加上下面这句话就可以进行多点触摸了[__glView setMultipleTouchEnabled:YES];// …………………Return YES;
}

         这样多点触摸就可以成功进行了。

二.android上的多点触摸

       android上的多点触摸不需要像ios上的多点触摸那样需要在底层添加代码,它可以直接使用。

       但是,有一个需要注意的地方。在多个手指刚刚接触屏幕调用ccTouchesBegan的时候,pTouches->count() 的值永远不是大于等于2,而永远是1。所以此时不能直接判断触点是否大于等于2,而应该用for或者while来循环pTouches进行计算才可以。

三.关于CCStandardTouchDelegate和CCTargetedTouchDelegate
CCStandardTouchDelegate
       将所有的Touch信息直接传递给实现该协议的对象,可以处理当前屏幕触摸的每个触摸点,好像最多是十个吧。Standard这套协议,他会按照优先级给每个层排序。然后把touch按照顺序分别传进去,也就是说从上到下的所有层 只要开启了self.istouchenabled = YES 那么他们都会收到touch,而且不可以吃掉该事件。测试显示即使上面一层相应了该事件,它仍然会传递到下一层。我们的问题就来了,Standard协议无法吃掉事件,也许多个层都会相应的时候会出问题,而研究target协议实现的源码,也可以发现其实吃掉一个事件很简单,只要在Touch的集合中执行removeObject方法即可。
CCTargetedTouchDelegate
        要求实现该代理的类一次只能处理一个事件,并且吃掉该事件,不再传播。targeted这套协议只支持单点触控,即使是多点触控也当单点触控来用,但是返回的UITouch就不知道是哪个了。他的好处是有swallow选项,即可判断是否继续传递 touch,而且,他的cctouchbegan函数是个bool值,如果你不返回一个yes的话,后面的 move 和 ended 都不会执行,如果要使用该协议,要在layer中手动设定代理:addStandardDelegate。因为CCLayer内部只注册标准代理。

两个层同时显示:一个用CCStandardTouchDelegate,另一个用CCTargetedTouchDelegate
当两个层同时显示时,且一个用CCStandardTouchDelegate多点触摸,另一个层用CCTargetedTouchDelegate单点触摸,那么当玩家点击屏幕时,CCTargetedTouchDelegate单点会先响应,至于CCStandardTouchDelegate响应与否,要看CCTargetedTouchDelegate是否把触点吞噬。如果触点没有被CCTargetedTouchDelegate吞噬,那么CCStandardTouchDelegate可以响应,否则不可以响应。
CCMenu继承了CCLayer,但是它注册的是targeted协议,所以我们很少发现CCMenu的混乱,因为它会将touch吃掉。


http://www.ppmy.cn/news/484985.html

相关文章

实现单点和多点触屏操作

1、当把unity游戏运行到IOS或者Android设备上时候,桌面系统中的鼠标左键操作可以自动变为手机屏幕上的触屏操作,但鼠标操作无法实现一些特有的触屏操作,比如多点触屏等,在unity的input类中,除了包括桌面系统的各种输入…

多点触摸:MultiPointTouchArea

MultiPointTouchArea minimumTouchPoints: 多点触摸数量的最小值 maximumTouchPoints: 最大值 touchPoints:数组,存储自定义ID,每个ID将会是一个触摸点,外部使用ID访问此触摸的状态:按下抬起、XY等等属性 代码:每次触摸触发对应的粒子特效,粒子发射坐标为触摸点的坐标 Multi…

windows 7多点触摸开发

win7 触摸屏系统应用广泛,软件操作方便,功能强大,现以被许多硬件厂商应用。 我曾用一台装有win7 的汉王平板电脑进行了多点触摸软件的开发。 开发环境及条件: 1. 平板电脑 win7触摸系统 2. 编译平台 win7vs2010 。(我…

什么是多点触摸?

传统的触控屏幕一次只能判断一个触控点,若同时有两个以上的点被触碰,就不能做出正确反应,或者说反应混乱了。多重触控的任务可以分解为两个方面的工作,一是同时采集多点信号,二是对每路信号的意义进行判断,…

什么是多点触摸屏

定义:区别于传统的单点触摸屏 ,多点触摸屏的最大特点在于可以两只手,多个手指,甚至多个人,同时操作屏幕的内容,更加方便与人性化.多点触摸技术也叫多点触控技术. 应用:多点触控在实际应用中被分为两个层面: 其一、是主控芯片能够同时采集多点…

多点触摸方案和IC

惠拓多点触摸屏开发者指南: http://www.hitouchpc.com/Upload/Software/%E6%83%A0%E6%8B%93%E5%A4%9A%E7%82%B9%E8%A7%A6%E6%91%B8%E5%B1%8F%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.pdf CSDN论坛讨论,USB外接触摸屏的windows7的方案 帖子地址&#xf…

【iphone】处理多点触控

【iphone】处理多点触控 (转自:http://miaoshuanghe.blog.163.com/blog/static/14013047620107100457798/) UIView 继承的 UIResponder (负责UI事件处理) 类中提供了四个方法处理多点触控: - (void )touchesBegan:(NSSet *)touc…

Android中的多点触摸

我的学习视频地址,一起来学习Android… http://edu.csdn.net/course/detail/2741/43164?auto_start1> 代码下载地址 代码一:自定义支持多点触摸的TextView http://download.csdn.net/detail/zhiyuan0932/9513852 什么是多点触摸 允许计算机用户同时通过多个…