Cocos2d是一個比較流行的iphone游戲開發框架,據說在AppStore 上已有超過 100 個游戲是基亍 Cocos2D-iPhone。其中 3 個由此 迚入過 TOP 10 的排名。其中的 StickWars 更是曾排名第一。現在,讓我們來開始Cocos2d的學習之旅吧!
## 一、安裝下載
Cocos2d下載地址:[http://code.google.com/p/cocos2d-iphone/downloads/list](http://code.google.com/p/cocos2d-iphone/downloads/list)
當前最新版本為1.0。本教程選用的是穩定版本0.99.5。
下載文件為targ.gz格式,將其解壓到某個目錄下,打開該目錄,找到install-templates.sh文件,這個就是Cocos2d的安裝腳本。
你可以直接在終端里運行這個腳本進行安裝,但如果你的Xcode沒有安裝在默認目錄下,則你需要在命令中添加一個參數。
例如,你的Mac中可能同時存在一個Xcode版本(3.2.5),安裝目錄為:/Users/$yourname$/Developer,如果你想將Cocos2d安裝到這個Xcode(3.2.5),則需要使用用命令:
~~~
./install-templates.sh ?/Users/$yourname$/Developer
~~~
來進行安裝。
安裝完畢,你可以打開Xcode,新建Project,你會在UserTemplates目錄下看到多了4個Cocos2d Application模板(如果是0.99版本,則只有3個模板):

?
## 二、新建cocos2dApplications項目
新建一個cocos2dApplications項目,編譯運行效果如下:

?
打開HelloWorldScene.h,可以看到如下代碼:
~~~
#import "cocos2d.h"
// HelloWorld Layer
@interface HelloWorld : CCLayer
{
}
// returns a Scenethat contains the HelloWorld as the only child
+(id) scene;
@end
~~~
首先,import指令導入了cocos2d.h,在這個.h文件中,已經包含(import)了cocos2d的所有類。因此我們導入了cocos2d.h后,就不需要再一個個導入要用到的cocos2d類了。
其次,HelloWorldScene.h中定義了一個CCLayer子類。CCLayer即所謂“層”的概念。層是一個容器的概念,cocos2d在層上放置多個動畫元素,如文字、標簽、圖片、菜單,此外層接收觸摸和加速器事件。
第三,定義了一個靜態方法,返回了一個——Scene,這個Scene實際上包含了一個層——HelloWorld,這是一個不錯的實例化方法。Coco2d中Scene的概念,類似于電影中“場景”的概念--由于受舞臺空間或屏幕空間的限制,一個情節往往只能在固定的空間環境中展現,而電影往往是由許多個情節構成, 隨著劇情的發展,場景也需要改變,新的場景需要產生。所以電影就會在一幕幕場景中進行切換 ,這種切換被稱為“轉場”。
切換到HelloWorldScene.m :
~~~
#import "HelloWorldScene.h"
// HelloWorldimplementation
@implementation HelloWorld
~~~
上面導入了HelloWorldScene.h并實現了HelloWorld類。O-C中,文件名不見得需要和類名一致。
~~~
+(id) scene
{
……
}
~~~
這個方法就不介紹了,和前面說過的一樣。
~~~
-(id) init
{
if( (self=[superinit] )) {
CCLabelTTF *label = [CCLabelTTFlabelWithString:@"HelloWorld"fontName:@"MarkerFelt"fontSize:64];
CGSize size = [[CCDirectorsharedDirector] winSize];
label.position =? ccp(size.width /2 , size.height/2 );
[selfaddChild: label];
}
returnself;
}
~~~
init方法中,創建了一個標簽 CCLabelTTF (以前是CCLabel)并讓他居中。ccp函數是CGPointMake函數的縮寫。
接下來,看一下應用程序委托,如果你有過Cocoa編程的經驗,那么會發現這就是一個UIApplicationDelegate,它的主要方法是applicationDidFinishLaunching:(UIApplication*)application :。
,并將EAGLView綁定到
首先取得Director——導演。導演是cocos2d程序的統籌者和協調者,負責整個應用程序的主窗口的創建,以及每個場景在時間線上的先后順序。
~~~
CCDirector *director = [CCDirectorsharedDirector];
~~~
然后創建EAGLView實例。EAGLView 派生亍類 UIView, 蘋果公司用它來實現 OpenGL 輸出支持,以支持OpenGLES 編程:
~~~
EAGLView *glView = [EAGLView viewWithFrame:[windowbounds]
?? pixelFormat:kEAGLColorFormatRGB565
?? depthFormat:0
];
~~~
并將EAGLView綁定到導演的openGLView屬性:
~~~
[director setOpenGLView:glView];
~~~
設置橫屏:
~~~
setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];
~~~
設置幀間隔(尚未實現):
~~~
[director setAnimationInterval:1.0/60];
~~~
設置幀率顯示,即屏幕左下角不斷變化的數字:
~~~
[director setDisplayFPS:YES];
~~~
設置渲染格式位32位RGB:
~~~
[CCTexture2DsetDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
~~~
移除閃屏,即一開始的那個coco2d Logo標志的屏幕:
~~~
[selfremoveStartupFlicker];
~~~
顯示HelloWorld文字標簽的場景:
~~~
[[CCDirectorsharedDirector] runWithScene: [HelloWorldscene]];
}
~~~