企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
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个模板): ![](https://box.kancloud.cn/2016-05-04_572a0b8ff2882.gif)   ## 二、新建cocos2dApplications项目 新建一个cocos2dApplications项目,编译运行效果如下: ![](https://box.kancloud.cn/2016-05-04_572a0b9195d9b.gif)   打开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]]; } ~~~