cocos2d學習 CCLayer中的touch

2021-05-26 23:05:43 字數 1861 閱讀 8619

cocos2d 提供了兩種touch處理方式,standard touch delegate和

targeted touch delegate方式(參見cctouchdelegateprotocol.h中源**),

cclayer預設是採用第一種方式(參見cclayer的 registerwithtouchdispatcher方法)。

在cclayer子類中要能接收touch事件,首先需要啟用touch支援,在init方法中設定istouchenabled值為yes。

standard方法中使用者需要過載四個基本的touch處理方法,如下:

-(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。

-(void) cctouchesended:(nsset *)touches withevent:(uievent *)event;

-(void) cctouchesmoved:(nsset *)touches withevent:(uievent *)event;

-(void) cctouchescancelled:(nsset*)touch withevent:(uievent *)event;

這三個方法和cctouchesbegan類似。

在standard方式中的響應處理事件處理的都是nsset,而 targeted方式只處理單個的uitouch物件,在多點觸控條件下,應該採納standard方式。在使用targeted方式之前需要重寫 cclayer中的registerwithtouchdispatcher方法:

//記得在標頭檔案中匯入「cctouchdispatcher.h」

-(void) registerwithtouchdispatcher

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才會接著響應。

cocos2d實現語音 Cocos2d 聲音API

param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...

COCOS2D 學習教程

1.在cocos2d裡面如何使用texture packer和畫素格式來優化spritesheet spritesheet.html 2.如何使用cocos2d來做乙個簡單的iphone遊戲教程 第一部分 5 程1.html 3.如何使用cocos2d開發乙個簡單的iphone遊戲 旋轉炮塔。第二部...

cocos2d學習筆記

粒子系統,使用系統自己的粒子系統的書寫方法 if cclayer init return false cctexture2d fire cctexturecache sharedtexturecache addimage fire.png ccparticlesystem firepartical ...