Cocos2d是一个比较流行的iphone游戏开发框架,据说在 AppStore 上已有超过 100 个游戏是基亍 Cocos2D-iPhone。其中 3 个由此 迚入过 TOP 10 的排名。其中的 StickWars 更是曾排名第一。 现在,让我们来开始Cocos2d的学习之旅吧!

一、安装下载

Cocos2d下载地址: 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,你会在User Templates目录下看到多了4个Cocos2d Application模板(如果是0.99版本,则只有3个模板):

二、新建 cocos2d Applications 项目

新建一个 cocos2d Applications 项目,编译运行效果如下:

打开HelloWorldScene.h,可以看到如下代码:

#import "cocos2d.h"

// HelloWorld Layer

@interface HelloWorld : CCLayer

{

}

// returns a Scene that 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"

// HelloWorld implementation

@implementation HelloWorld

上面导入了HelloWorldScene.h并实现了 HelloWorld类。O-C中,文件名不见得需要和类名一致。

+( id ) scene

{

……

}

这个方法就不介绍了,和前面说过的一样。

-( id ) init

{

if ( ( self =[ super init ] )) {

CCLabelTTF *label = [ CCLabelTTF labelWithString : @"Hello World" fontName : @"Marker Felt" fontSize : 64 ];

CGSize size = [[ CCDirector sharedDirector ] winSize ];

label. position =  ccp ( size. width / 2 , size. height / 2 );

[ self addChild : label];

}

return self ;

}

init方法中,创建了一个标签 CCLabelTTF (以前是CCLabel)并让他居中。ccp函数是 CGPointMake函数的缩写。

接下来,看一下应用程序委托,如果你有过Cocoa编程的经验,那么会发现这就是一个UIApplicationDelegate,它的主要方法是 applicationDidFinishLaunching:( UIApplication *)application :。

,并将EAGLView绑定到

首先取得Director——导演。导演是cocos2d程序的统筹者和协调者,负责整个应用程序的主窗口的创建,以及每个场景在时间线上的先后顺序。

CCDirector *director = [ CCDirector sharedDirector ];

然后创建EAGLView实例。 EAGLView 派生亍类 UIView, 苹果公司用它来实现 OpenGL 输出支持,以支持OpenGL ES 编程:

EAGLView *glView = [EAGLView viewWithFrame:[ window bounds ]

pixelFormat:kEAGLColorFormatRGB565

depthFormat: 0

];

并将EAGLView绑定到导演的openGLView属性:

[director setOpenGLView :glView];

设置横屏:

setDeviceOrientation:kCCDeviceOrientationLandscapeLeft];

设置帧间隔(尚未实现):

[director setAnimationInterval : 1.0 / 60 ];

设置帧率显示,即屏幕左下角不断变化的数字:

[director setDisplayFPS : YES ];

设置渲染格式位32位RGB:

[ CCTexture2D setDefaultAlphaPixelFormat : kCCTexture2DPixelFormat_RGBA8888 ];

移除闪屏,即一开始的那个coco2d Logo标志的屏幕:

[ self removeStartupFlicker ];

显示HelloWorld文字标签的场景:

[[ CCDirector sharedDirector ] runWithScene : [ HelloWorld scene ]];

}

Cocos2d开发系列(一)相关推荐

  1. Cocos2d开发系列

    Cocos2d开发系列(五) 分类:  iPhone开发2011-05-03 14:50  5020人阅读  评论(0)  收藏  举报 <Learn IPhone and iPad Cocos ...

  2. Cocos2d开发系列(二)

    一.安装cocos2d文档集 为了便于今后检索Coco2d的各种类.方法.属性,我们最好将cocos2d的文档安装到Xcode中.作者Blog中曾有一篇译文<使用Doxgen创建Xcode文档集 ...

  3. Cocos2d开发系列 一

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Coco ...

  4. Cocos2d开发系列(四)

    <Learn IPhone and iPad Cocos2d Game Delevopment>的第5章. 一.使用多场景 很少有游戏只有一个场景.这个例子是这个样子的: 这个Scene中 ...

  5. Cocos2dx游戏开发系列笔记3:牛刀小试-忍者飞镖射幽灵的Demo

    2019独角兽企业重金招聘Python工程师标准>>> 就是这个例子,应该很简单,主要用到的有:精灵的移动,触摸,碰撞检测. 赶紧搞定,待会还要陪哲哲来几局爱消除. 首先在Scene ...

  6. Cocos2dx游戏开发系列笔记11:解刨《战神传说》完结篇

    懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 ) 两点: 1 感谢 net19880504 同学,在上篇提到:想让骨头继续写<战神传说> ...

  7. 最实用的30个iPhone开发系列源码

    2019独角兽企业重金招聘Python工程师标准>>> iPhone开发中有很多特性让人云里雾里,同时iOS源代码的例子也不是很好找,本人深受其苦,推己及人,搜集整理最实用的30个i ...

  8. iOS开发系列--让你的应用“动”起来

    概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...

  9. iOS开发系列--通知与消息机制

    http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣 ...

最新文章

  1. 关于三层交换机的路由处理方式和路由器的路由处理方式的不同
  2. 【主题演讲】探索云、视频会议,编解码的奥妙
  3. Hibernate---架构
  4. CString,string,char数组的转换
  5. php制作404,利用thinkphp怎么制作一个404跳转页面
  6. 那些在家啃书自学算法的人,最后都找到工作了吗?
  7. 百度积极回应阿波龙项目不实报道;半数开发者认为学习新语言很困难;腾讯在长沙建立首个智慧产业总部……...
  8. 贝索斯的蓝色起源被21名员工投诉
  9. Linux case 及 函数位置参数
  10. 【win32汇编】0x04 第一个窗口程序
  11. file* linux,Linux基础——file命令与magic file
  12. ZXing条码扫描-竖屏解决方案
  13. 2022 腾讯云 阿里云返佣政策对比
  14. 走好数据中台最后一公里,为什么说数据服务API是数据中台的标配?
  15. 电脑机械硬盘秒变移动硬盘!
  16. 【任务二】打卡——by 003-Vamein
  17. python计算活了多少天计算器_年龄计算器-实际岁数计算器-周岁计算器-虚岁计算器-生日天数计算-活了多少天计算-虚岁怎么算...
  18. 计算机组成原理实验五:CPU组成与机器指令执行实验
  19. python学习——把Excel的内容自动填写到Word
  20. 关于Java对接读卡器遇到的坑Process finished with exit code -1073740940 (0xC0000374)

热门文章

  1. GIKT: A Graph-based Interaction Model for Knowledge Tracing
  2. 与贝加尔湖华创一起,收获满满的期货!
  3. power 见解_客户见解的两个简单来源,可改善用户体验
  4. 蒙古文字在线翻译_内蒙古语言免费中文转换蒙文翻译_中蒙互译电脑版在线
  5. 数字U家,即刻出发,2022联合利华黑客马拉松启动
  6. 重磅干货 | 五万字长文总结 C/C++ 知识(下)
  7. 计算机的基本结构以真值函数,离散数学N元真值函数问题
  8. Structured-Streaming编程练习知识点
  9. 在blog中显示天气预报、日历、时钟、MSN、QQ在线状态
  10. 二分查找以及其有趣的使用