成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Cocos2d 開發關于CCLayer中Touch事件

移動開發 iOS 游戲開發
Cocos2d 開發關于CCLayer中Touch事件是本文要介紹的內容,主要是來學習Cocos2d 開發中Touch事件。Cocos2d作為一個開源的2D游戲引擎,最初是用python語言實現,mac app開發流行后,提供了一個Objective-C的版本。

Cocos2d 開發關于CCLayerTouch事件是本文要介紹的內容,主要是來學習Cocos2d 開發Touch事件Cocos2d作為一個開源的2D游戲引擎,最初是用python語言實現,mac app開發流行后,提供了一個Objective-C的版本。采用Cocos2d框架開發iphone游戲,極大提高了開發的速度。簡單介紹參見百度百科 ,cocos2d官網 。

Cocos2d 開發中提供了兩種touch處理方式,Standard Touch Delegate和 Targeted Touch Delegate方式(參見CCTouchDelegateProtocol.h中源代碼),CCLayer默認是采用***種方式(參見CCLayer的 registerWithTouchDispatcher方法)。

CCLayer子類中要能接收touch事件,首先需要激活touch支持,在init方法中設置isTouchEnabled值為YES。

Standard Touch Delegate(CCLayer默認采納這種方式)

Standard方法中用戶需要重載四個基本的touch處理方法,如下:

  1. -(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 

touch事件發生時,會調用該方法響應touch事件。如果是單點touch,則只需要調用 UITouch *touch = [touches anyObject],就可以獲取touch對象;如果需要響應多點 touch,則需要調用[[event allTouches] allObjects]返回一個UITouch的NSArray對象,然后使用NSArray的objectAtIndex依次訪問各個UITouch對象。

為了獲取UITouch對象的坐標(假設該UITouch名稱為touch),調用[touch locationInView: [ touch view]]會返回一個UIView相關的坐標viewPoint。

使用Cocos2d的新建應用程序向導創建一個新的cocos2d application時,在xxxAppDelegate類的applicationDidFinishLaunching方法中CCDirector會將UIView轉換為支持OpenGL ES的EAGLView。此時,我們還需要將前面獲取的UIView中的viewPoint轉換為EAGLView坐標,調用[[CCDirector sharedDirector] convertToGL: viewPoint]即可實現。

  1. -(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;  
  2. -(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;   
  3. -(void) ccTouchesCancelled:(NSSet*)touch withEvent:(UIEvent *)event;  

這三個方法和ccTouchesBegan類似。

Targeted Touch Delegate方式

在standard方式中的響應處理事件處理的都是NSSet,而 targeted方式只處理單個的UITouch對象,在多點觸摸條件下,應該采納standard方式。在使用targeted方式之前需要重寫CCLayer中的registerWithTouchDispatcher方法:

  1. //記得在頭文件中導入“CCTouchDispatcher.h”  
  2.  
  3. -(void) registerWithTouchDispatcher {   
  4.        [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];  
  5.  } 

targeted方式中用戶需要重載4個基本的處理方法,其中ccTouchBegan必須重寫,其他三個是可選的。

  1. - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event; (必須實現)  
  2. - (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event;  
  3. - (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event;  
  4. - (void)ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event; 

每次touch事件發生時,先調用ccTouchBegan方法,該方法對每個UITouch進行響應并返回一個BOOL值,若為YES,則后續的ccTouchMoved、ccTouchEnabled和ccTouchCancelled才會接著響應。

多點觸摸支持

在xxxAppDelegate類的applicationDidFinishLaunching方法中加入下面代碼

  1. [glView setMultipleTouchEnabled:YES]; 

小結:詳解Cocos2d 開發關于CCLayerTouch事件的內容介紹完了,希望通過本文的學習能對你有所幫助。

責任編輯:zhaolei 來源: 網易博客
相關推薦

2011-08-08 11:40:42

Cocos2d CCLayer Touch

2011-08-09 16:08:58

IOS游戲Cocos2d

2011-07-29 18:02:06

2011-08-09 16:25:16

Cocos2d視圖坐標

2011-08-11 14:22:47

iPhone游戲Cocos2D

2011-08-08 11:26:39

Cocos2d 游戲 Class類

2011-08-11 14:32:04

iPhone游戲Cocos2dActions

2011-07-27 10:13:23

Cocos2D iPhone

2012-06-01 10:27:44

Cocos2d觸摸分發原理

2011-08-08 15:40:47

Cocos2d

2011-07-20 14:04:46

Cocos2d iPhone 游戲

2011-08-08 17:17:55

Cocos2D 坐標 OpenglES

2011-08-11 17:52:01

Cocos2d游戲對象

2011-07-27 13:57:36

iPhone 游戲 Cocos2d

2011-08-04 17:01:16

iPhone游戲開發 Cocos2d

2012-04-16 13:37:57

cocos2d

2011-08-11 18:00:18

Cocos2d動作Action

2011-07-27 17:07:06

iPhone 游戲 Cocos2d

2011-08-17 15:04:48

Cocos2DUIAccelerom加速計

2012-02-19 20:10:23

Cocos2d-x fCocos2dWindows Pho
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲综合视频 | 国产一区二区小视频 | 成年人视频在线免费观看 | 中文字幕蜜臀av | 国产精品视频久久久久 | 美女露尿口视频 | 成人免费视频网站在线观看 | 国产美女永久免费无遮挡 | 中文字幕在线一区二区三区 | 一区二区三区视频在线免费观看 | 久久人人国产 | 日韩久久久一区二区 | 国产1区2区3区 | 亚洲国产成人一区二区 | 久久亚洲国产精品 | 亚洲一区二区三区 | 欧美成人免费 | 中文字幕一级 | 中文字幕av高清 | 色av一区二区三区 | 波多野结衣中文视频 | 羞羞的视频免费看 | 青青草精品视频 | 99久久夜色精品国产亚洲96 | 日本精品一区二区三区在线观看视频 | 麻豆一区 | 国产视频1 | 欧美精品久久久久久久久久 | 亚洲一区二区久久久 | 激情一区二区三区 | 国产精品日韩一区二区 | 中文字幕一区在线观看视频 | 久久久精品视频免费看 | 激情久久av一区av二区av三区 | 国产精品久久久久久av公交车 | 草久久 | 久久久国产一区 | 一区二区三区在线播放视频 | 精品少妇v888av | 免费看欧美一级片 | 日韩久久久久 |