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 ...