【iOS-Cocos2d游戏开发之五】【2】多触点与触屏事件详解(单一监听、事件分发)

简介:

那么大概介绍了监听事件后,那么触屏中最关心的就应该是多触点啦;

 

 
 
  1. //-----获取多点触摸   
  2. NSSet *allTouches = [event allTouches];   
  3. UITouch *touchOne = [[allTouches allObjects]objectAtIndex:0];   
  4. UITouch *touchTwo = [[allTouches allObjects]objectAtIndex:1];   
  5. //...类推   

获取多点狠简单,那么下面再将基本常用到的几个判断写下:1-判断用户单击还是双击(针对一个触点)

 
 
  1. if([allTouches count]==1) {    
  2.     UITouch *touchOne = [[allTouches allObjects]objectAtIndex:0];   
  3.     switch ([touchOne tapCount]) {   
  4.         case 1:   
  5.              //单击   
  6.             CCLOG(@"%@",@"单击");   
  7.             break;   
  8.         case 2:   
  9.             //双击   
  10.             CCLOG(@"%@",@"双击");   
  11.             break;   
  12.     }   
  13. }   

2-判断用户两个触点之间是合拢还是分开(针对两个触点)

 

 
 
  1. if([allTouches count]==2) {    
  2.     //适当修改处理,不能同时取,否则肯定一样的啦(可以一个在began 一个在end)   
  3.     UITouch *touchOne = [[allTouches allObjects]objectAtIndex:0];   
  4.     UITouch *touchTwo = [[allTouches allObjects]objectAtIndex:1];   
  5.     CGFloat *disFirst  =[self distance:[touchOne locationInView:[self view]]    
  6.                             todistance:[touchTwo locationInView:[self view]]];   
  7.        
  8.     UITouch *touchOne = [[allTouches allObjects]objectAtIndex:0];   
  9.     UITouch *touchTwo = [[allTouches allObjects]objectAtIndex:1];   
  10.     CGFloat *disFinal  =[self distance:[touchOne locationInView:[self view]]   
  11.                             todistance:[touchTwo locationInView:[self view]]];   
  12.     if (disFirst>disFinal) {   
  13.         CCLOG(@"%@",@"合拢");   
  14.     }else{   
  15.         CCLOG(@"%@",@"分开");   
  16.     }   
  17. }   

 

这里我就粗略的写在一起,判定两个触点是否合拢其实就是用户刚触屏时记录两点之间的距离记做disFirst,然后在两个触点离开屏幕(或者移动事件中)的时候计算

当前的两个触点的距离disFinal,那么最后根据disFirst与disFinal距离关系就能知道是合拢还是分开;

(CCLOG 是cocos2d封装的打印方法,此种打印在编译发布正式游戏程序的时候是不会编译到程序中的,但是NSLOG会一直存在!要注意!)

 

最后给出两个函数,用于计算不同方式监听的函数中获取(转换)坐标的,因为cocos2d是openGL进行搭建的框架,所以需要坐标转换;

 

 
 
  1. +(CGPoint) locationFromTouches:(NSSet*)touches   
  2. {   
  3.     return [self locationFromTouch:[touches anyObject]];   
  4. }   
  5. +(CGPoint) locationFromTouch:(UITouch*)touch   
  6. {   
  7.     CGPoint touchLocation = [touch locationInView: [touch view]];   
  8.     return [[CCDirector sharedDirector] convertToGL:touchLocation];   
  9. }   

两个方法一看就能看出区别,一个是UITouch的,一个是NSSet,一个是单一监听,一个是分发监听;

 

ok,本章就到这里~~~(下周进入封闭开发了,吃睡都在公司了,咳咳,带上我的多啦a梦的小裤衩,娃哈哈~)





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

目录
相关文章
|
1月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
84 3
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
39 0
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
91 2
|
3月前
|
API 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
iOS 开发高效率工具包:10 大必备工具
47 1
|
3月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
52 1
|
6天前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
【4月更文挑战第18天】**Cocoa Touch** 是iOS和Mac OS X应用的核心框架,包含面向对象库、运行时系统和触摸优化工具。它提供Mac验证的开发模式,强调触控接口和性能,涵盖3D图形、音频、网络及设备访问API,如相机和GPS。是构建高效iOS应用的基础,对开发者至关重要。
9 0
|
21天前
|
开发工具 Swift iOS开发
利用SwiftUI构建动态用户界面:iOS开发新范式
【4月更文挑战第3天】 随着苹果不断推进其软件开发工具的边界,SwiftUI作为一种新兴的编程框架,已经逐渐成为iOS开发者的新宠。不同于传统的UIKit,SwiftUI通过声明式语法和强大的功能组合,为创建动态且响应式的用户界面提供了一种更加简洁高效的方式。本文将深入探讨如何利用SwiftUI技术构建具有高度自定义能力和响应性的用户界面,并展示其在现代iOS应用开发中的优势和潜力。