cocos2d是乙個比較強大的開發引擎,整合了物理引擎等。並對gles進行了很好的封裝。
1:啟動方法
cocos2d程式啟動方法和一般程式一樣:然後
ccdirector*director = [ccdirector
shareddirector];
用來獲取乙個共享的指示器,指示器用來設定引擎的一些常用屬性
#if game_autorotation == kgameautorotationuiviewcontroller
[directorsetdeviceorientation:kccdeviceorientationportrait];
#else
[director setdeviceorientation:kccdeviceorientationlandscapeleft];
#endif
//上面兩句用來設定螢幕的方向,方向
[directorsetanimationinterval:
1.0/
60];//設定重新整理間隔,這裡是表示一秒重新整理60次,建議取乙個比較合適的值30-60
[directorsetdisplayfps:yes];//是否顯示fps指示,開啟這個會在螢幕中顯示當前的fps
2:架構邏輯:
cocos2d用ccnode來決定在什麼地方顯示什麼。所有結點的基類都時ccnode,只包含位置資訊。由這個類派生出兩個基本類ccscene和cclayer。
任何乙個場景都會繼承自cclayer,cclayer主要負責接受基本的觸控訊息等。
而ccscene是乙個抽象類,用來把當前場景轉換為ccnode,在場景中需要靜態初始化,**如下
+(ccscene *) scene
任何其他元素(如cclabel:用來顯示乙個文字)需要在初始化後呼叫[self addchild:元素
]方法加入到當前的layer裡。
以下是在螢幕**顯示字串的方法:
-(id) init
return
self;
} 注意可以在addchild之前設定position也可以在addchild之後。
3:記憶體管理:
cocos2d預設所有的類都會自動釋放,比如
ccscene *scene = [ccscene
node];
並不需要自己手動去釋放,但有些資料需要儲存到下乙個場景怎麼辦?
需要 用retain標誌來分配,然後要記得手動釋放。雖然這種方法cocos2d不太支援這樣做。
還有個辦法就是用ccnode父節點來儲存這個物件。
mynode = [ccnode node];mynode.tag = 123;
這個tag會使得mynode增加到父類的乙個ccarray裡面(ccarray類似nsmutablearray ,但是比nsmutablearray速度快)
這樣之後在用的時候可以[self getchildbytag:123]來獲取原來的那個node,而不必擔心他會釋放掉或者找不到。tag需要唯一並且為整數。最新版本的cocos2d新增乙個函式來快速新增tag。另外建議使用列舉來代替123這樣不可讀的資料。
[self
addchild:batch z:
0tag:ktagbatchnode];
4:其他細節:
如果場景需要接受觸控訊息,需要在類的init函式裡面呼叫
self
.istouchenabled=
yes;
這個成員變數是繼承自cclayer的,設定這個則開啟接收觸控。
同樣的
self
.isaccelerometerenabled=
yes;
用來開啟接收加速器。
盡量使用cclog來輸出log,因為在cocos2d裡面分為debug版本和release版本。cclog把nslog重新封裝,而且在release版本裡面不會再去呼叫slog。
**:
cocos2d筆記 cocos2d的單例模式
cocos2d充分使用了單例設計模式,這裡有必要提及它是因為它是經常是討論熱點。大體上說,乙個singleton是乙個類,它在應用使用期中僅僅例項化一次。為了確保如此,就要使用乙個既建立又訪問此物件例項的靜態方法。因此,你不使用alloc init或者靜態自動釋放初始化器 static autore...
cocos2d學習筆記
粒子系統,使用系統自己的粒子系統的書寫方法 if cclayer init return false cctexture2d fire cctexturecache sharedtexturecache addimage fire.png ccparticlesystem firepartical ...
cocos2d 學習筆記
ccdirector類,簡稱director 導演 是cocos2d遊戲引擎的核心。director是乙個單例 它儲存著 cocos2d的全域性配置設定,同時管理著cocos2d的場景。director的主要用處如下 1.訪問和改變場景 2.訪問cocos2d的配置細節 3.訪問檢視 opengl,...