http://www.cnblogs.com/zeping/archive/2011/04/09/2010830.html
Cocos2d 作为一个开源的2D游戏引擎,最初是用python语言实现,mac app开发流行后,提供了一个Objective-C的版本。采用Cocos2d框架开发iphone游戏,极大提高了开发的速度。简单介绍参见http://baike.baidu.com/view/3800461.htm ,http://www.cocos2d-iphone.org/ 。Cocos2d 提供了两种touch处理方式,%url% %url%%url%
*]url
Standard方法中用户需要重载四个基本的touch处理方法,如下:
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 当touch事件发生时,会调用该方法响应touch事件。如果是单点touch,则只需要调用 UITouch *touch = ,就可以获取touch对象;如果需要响应多点 touch,则需要调用 allObjects]返回一个UITouch的NSArray对象,然后使用NSArray的objectAtIndex依次访问各个UITouch对 象。为了获取UITouch对象的坐标(假设该UITouch名称为touch),调用]会返回一个UIView相关的坐标viewPoint。 使用Cocos2d的新建应用程序向导创建一个新的cocos2d application时,在xxxAppDelegate类的applicationDidFinishLaunching方法中CCDirector 会将UIView转换为支持OpenGL ES的EAGLView。此时,我们还需要将前面获取的UIView中的viewPoint转换为EAGLView坐标,调用 convertToGL: viewPoint]即可实现。
-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
-(void) ccTouchesCancelled:(NSSet*)touch withEvent:(UIEvent *)event;
这三个方法和ccTouchesBegan类似。
*]url
在standard方式中的响应处理事件处理的都是NSSet,而 targeted方式只处理单个的UITouch对象,在多点触摸条件下,应该采纳standard方式。在使用targeted方式之前需要重写 CCLayer中的registerWithTouchDispatcher方法: //记得在头文件中导入“CCTouchDispatcher.h” -(void) registerWithTouchDispatcher {
addTargetedDelegate:self priority:0 swallowsTouches:YES];
} targeted方式中用户需要重载4个基本的处理方法,其中ccTouchBegan必须重写,其他三个是可选的。
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event; (必须实现)
- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event; 每次touch事件发生时,先调用ccTouchBegan方法,该方法对每个UITouch进行响应并返回一个BOOL值,若为YES,则后续的 ccTouchMoved、ccTouchEnabled和ccTouchCancelled才会接着响应。
*]url
在xxxAppDelegate类的*applicationDidFinishLaunching 方法中加入下面代码* ;
http://www.cnblogs.com/zeping/原文地址http://www.cnblogs.com/zeping/archive/2011/04/09/2010830.html