## 一、安装cocos2d文档集
为了便于今后检索Coco2d的各种类、方法、属性,我们最好将cocos2d的文档安装到Xcode中。作者Blog中曾有一篇译文《使用Doxgen创建Xcode文档集》描述了创建文档集的方法,但时至今日,Xcode已经发展到3.2.5,而Doxgen也升级到1.7.3了,原文中描述的方法也多少有些不适应了。且不知到什么原因,直接在Xcode中编译cocos2d文档集总是不成功,所以这里只能用DoxgenGUI生成cocos2d文档集。
1、安装Doxgen
当前版本为1.7.3,下载地址:
[http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc](http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc)
dmg格式,下载后把doxgen.app拖到“应用程序”目录(/Applications)即可。
2、运行Doxgen.app
Doxgen GUI使用起来很简单,如下图所示:
![](https://box.kancloud.cn/2016-05-04_572a0b924a58f.gif)
Step1: Specifythe working directory…
需要指定一个Doxgen工作目录,随便指定一个即可,实在不行就新建个,Doxgen有时候会放一些临时文件在这里。
为简单起见,我们使用的是Wizard模式,这种方式比较简单。
Project name:填写项目的名称
Projectversion or id:版本号
Project logo:选择一个图标,会显示在文档集中。
Source codedirectory:指定源文件目录,cocos2d的源文件都放在安装目录的cocos2d目录中。当然也可以只指定cocos2d目录,然后勾上Scanrecursively,Doxgen会自己去搜索所有子目录。
Destinationdirectory:文档集生成后存放的路径,这里,我们直接指定为cocos2d目录。
好了,点击Run按钮,进入如下界面,然后点击Rundoxygen就大功告成了:
![](https://box.kancloud.cn/2016-05-04_572a0b9264eef.gif)
打开Xcode,点击Help——>DeveloperDocumentation,打开Document Browser,点击Home按钮,可以看到新多出来的Doc Set:
![](https://box.kancloud.cn/2016-05-04_572a0b9284e66.gif)
当然,你也可以打开文档集存放目录(/cocos2d-iphone-0.99.5/html/)目录进行浏览(因为我们生成的Doc Set是Html格式的):
![](https://box.kancloud.cn/2016-05-04_572a0b929d81c.gif)
## 二、理解Cocos2dApplication
新建一个Cocos2dApplication,将Classes目录下的所有源文件删除。因为我们不想使用Cocos2d模板自动生成的代码而准备自己从头实现,这样更方便我们理解Cocos2d应用程序的机制。同时学习在cocos2d动画中Action(动作)的概念和运用。
1、实现 一个CCLayer
新建File,命名为HelloAction,编辑.h和.m文件内容如下:
~~~
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface HelloAction : CCLayer{
}
@end
#import "HelloAction.h"
@implementation HelloAction
-(id) init
{
if( (self=[superinit] )) {
// 创建标签
CCLabelTTF* label = [CCLabelTTFlabelWithString:@"Hello Actions"fontName:@"Marker Felt"fontSize:64];
// 通过director得知窗口size
CGSize size = [[CCDirectorsharedDirector] winSize];
// 让标签居中
label.position = ccp( size.width /2 , size.height/2 );
// 向 CCLayer 中加入标签
[selfaddChild: label];
// 定义一个 CCAction:CCScaleBy 动作,3秒内,缩放2.5倍
id action = [CCScaleByactionWithDuration:3.0fscale:2.5f];
// 在标签上应用 CCAction
[labelrunAction:action];
// 定义一个 CCSprite:并载入图像 icon.png,设置 CCSprite 的位置
CCSprite *sprite = [CCSpritespriteWithFile:@"Icon.png"];
sprite.position = ccp( 0, 50);
// 把 CCSprite 加入到 Layer,并设置其 z 轴为1,z 轴越大则表明该对象越处于上层
// 由于 z 轴默认值为0,因此 CCSprite 将显示在标签的上层
[selfaddChild:sprite z:1];
// 定义 CCAction:CCRotateBy 动作,4秒内旋转720度
// "By" 意味着相对. "To" 意味着绝对.
id rotateAction = [CCRotateByactionWithDuration:4angle:180*4];
// 定义 CCAction:CCJumpBy 动作,4秒内蹦4次,位置右下角,高度100.
id jumpAction = [CCJumpByactionWithDuration:4position:ccp(size.width,0) height:100jumps:4];
// 定义 CCAtion: CCSpawn 动作,同时执行旋转动作和蹦跳动作
id fordward = [CCSpawnactions:rotateAction, jumpAction, nil];
// 基本上所有的 CCAction 都支持 reverse 方法
// 它将执行相反的动作
id backwards = [fordward reverse];
// 定义 CCAction:CCSequence 动作,它将顺序执行多个动作
id sequence = [CCSequenceactions: fordward, backwards, nil];
// 定义 CCAction:CCRepeat 动作,它可以重复执行指定动作任意次数.
// 如果要不停地重复,可以定义 "RepeatForEver" 动作.
id repeat = [CCRepeatactionWithAction:sequencetimes:2];
// 命令 CCSprite 执行指定动作,当该层显示在屏幕上时,动作即会自动执行
[spriterunAction:repeat];
}
returnself;
}
- (void) dealloc
{
[superdealloc];
}
@end
~~~
2、实现应用程序委托
新建File,命名为AppDelegate,编辑.h和.m文件内容如下:
~~~
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface AppDelegate : NSObject<UIAccelerometerDelegate, UIAlertViewDelegate, UITextFieldDelegate,UIApplicationDelegate>
{
UIWindow *window;
}
@property (nonatomic, retain) UIWindow *window;
@end
#import "AppDelegate.h"
#import "HelloAction.h"
#import "EAGLView.h"
@implementation AppDelegate
@synthesize window;
- (void) applicationDidFinishLaunching:(UIApplication*)application
{
//创建主窗口
window = [[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]];
// 创建EAGLView实例。 EAGLView 派生亍类 UIView, 苹果公司用它来实现 OpenGL 输出支持,以支持OpenGL ES 编程:
EAGLView *glView = [EAGLViewviewWithFrame:[windowbounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0
];
// 并将EAGLView绑定到导演的openGLView属性
[[CCDirectorsharedDirector] setOpenGLView:glView];
// 设置横屏
[[CCDirectorsharedDirector]setDeviceOrientation:CCDeviceOrientationLandscapeLeft];
[windowaddSubview:glView];
// 显示主窗口
[windowmakeKeyAndVisible];
[CCTexture2DsetDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
// 创建一个空的场景
CCScene *scene = [CCScenenode];
// 创建层:HelloAction
CCLayer *layer = [HelloActionnode];
// 将层加到场景中
[scene addChild:layer];
// 第一个场景:主场景
[[CCDirectorsharedDirector] runWithScene: scene];
}
- (void) dealloc
{
[windowrelease];
[superdealloc];
}
~~~
3、修改main.h
找到文件中如下语句,并修改为:
~~~
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
~~~
运行程序,可以看到当主场景载入后,“Hello Action”标签渐渐变大,而sprite在屏幕上来回蹦跳并旋转行进:
![](https://box.kancloud.cn/2016-05-04_572a0b92b688c.gif)