学习cocos2d需要一定的编程基础,最好了解objective-c的语法。至于下载和安装的过程网上有很多,这里不多介绍,直接进入项目的学习。

创建一个cocos2d项目,直接运行,效果如图:

左下角显示当前的帧率,即每秒的帧数,更新屏幕的频率。

---------------------------------------------------------------------------------------------------------------

有几个概念必须要理解:

1.导演类:CCDirector,所有类的父类,控制整个游戏项目的运行,包括场景、人物等的显示.

2.层和布景:CCLayer和CCScene,都继承自CCNode节点类。CCScene类似于现实生活中的场景,在这个场景中又可以铺垫其他的事件,如一个舞台是一个场景,在这个场景中可以上演话剧、小品、唱歌等各种节目,那么这节目可以看作是一个CCLayer,我可以创建唱歌层:SingCCLayer,让它继承CCLayer,然后添加元素,就是演员。一个节点CCNode即是一个可视化的元素,如可以创建一个CCLabelTTF标签,放入CCLayer中,或者按钮等,丰富自定义的场景布局。

-------------------------------------------------------------------------------------------

--基础代码讲解--

(1)打开HelloWorldLayer.h头文件,你可以看到HelloWorldLayer类是继承自
CCLayer类的。

CCScene只是一个抽象的概念,默认的设置场景的方法是在你的类里面使用
一个静态初始化方法(static initializer)+(id) scene。此方法会生成一
个CCScene对象,并且将当前自定义层(这里指的是HelloWorldLayer)的对象添加到场景节点中。几乎在任何情况
下,CCScene都是在这里创建和使用的。以下是一个通用的+(id)
scene方法:

+(CCScene *) scene

{

//
创建一个场景,注意场景Scene和层Layer以及各个元素都是CCNode的子类,创建对象时均可用类方法:node

CCScene *scene = [CCScene node];

// 创建一个本类的一个对象

HelloWorldLayer *layer = [HelloWorldLayer node];

// 在场景中添加自定义层

[scene addChild: layer];

// return the scene

return scene;

}

(2)之后就是层Layer的初始化并显示在场景中,跟OC中一样,使用-(id)init方法:

-(id) init

{

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

//
生成和初始化一个标签对象,在2d中标签有3种,CCLabelTTF是其中一种

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

// 从当前CCDirector得到当前屏幕的尺寸

CGSize size =
[[CCDirector
sharedDirector]
winSize];

// 将标签定位在屏幕中央

label. , size. );

// 将标签添加到视图层中

[self addChild: label];

................//还有很多其他内容,先不管它

return self;

}

 

(3)下面在init方法中做一点小小修改,让它感觉起来是我们动手做过的小程序,而不是一个死的模板。

首先,在init方法中做两处修改:一是启用触摸输入,二是设置一个以后可以用来调用对象的标记:tag。在列表2-3中标出了这两处修改:

-(id) init

{

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

// 生成和初始化一个标签对象,在2d中标签有3种,CCLabelTTF是其中一种

];

// 从当前CCDirector得到当前屏幕的尺寸

CGSize size =
[[CCDirector sharedDirector] winSize];

// 将标签定位在屏幕中央

label.position =  ccp(
size. ,
size. );

// 将标签添加到视图层中

[self addChild:
label];

//添加标签tag

label.;//可以用任何数字,但建议用常量

//启动可触摸模式

self.isTouchEnabled=YES;//这样,点击屏幕,相关触摸函数才会响应触摸

................//还有很多其他内容,先不管它

return self;

}

(4)响应触摸的函数:

-(void)ccTouchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event{

//CCLabelTTF *label=(CCLabelTTF *)[self
getChildByTag:10];

CCNode
*node=[];

//验证返回的节点是CCLabelTTF类的对象

NSAssert([node isKindOfClass:[CCLabelTTF class]], @"node is not a
CCLabelTTF!");

CCLabelTTF
*label=(CCLabelTTF
*)node;

label.scale=CCRANDOM_0_1();//我们使用了cocos2d
的CCRANDOM_0_1()宏来改变标签的大小属性,使它在0和1之间变化。每次你点
击屏幕都会让标签尺寸发生变化.

 

}

ios游戏开发--cocos2d学习(1)的更多相关文章

  1. ios游戏开发--cocos2d学习(2)

    在第一节中简单介绍了2d项目模板HelloWorld的基础代码,并做了一点小小的改变,像触摸接收.旋转.移动和颜色转变序列CCSequence的使用等等,2d本身封装好了很多方便使用的动作,只需要调用 ...

  2. ios游戏开发--cocos2d学习(3)

    ------------继续上一节的内容. “接收触摸事件”: CCLayer类是用来接收触摸输入的.不过你要首先启用这个功能才可以使用它. self.isTouchEnabled = YES;//此 ...

  3. 开发者经验谈:如何一天时间搞定iOS游戏开发?

    开发者经验谈:如何一天时间搞定iOS游戏开发? 在一天时间里将完成iPhone游戏开发由梦想变为现实? 本文作者给出了从创意转变成现实的详细答案.使用苹果原生游戏引擎SpriteKit,遵循一定的原则 ...

  4. ios游戏开发 Sprite Kit教程:初学者 1

    注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点 Sprite Kit vs Cocos2D-iPhone vs Cocos2D- ...

  5. CocosCreator游戏开发---菜鸟学习之路(一)

    PS(废话): 辞职后在家好久好久了,久到经济不允许了,接着就准备再次出去找工作了,然而工作哪有那么好找,特别是像我这种菜鸟.而且我还准备转行,准备去做游戏,技能等级接近于0,那工作就更难找了.既然如 ...

  6. cocos2d-x ios游戏开发初认识(六) 渲染的优化

    做程序开发肯定要考虑到内存的优化,毕竟iphone本身的内存就不是非常大.这一节主要说这个cocos2d开发对内存的优化,详细表如今,既能够对同样的精灵(图片)仅仅渲染一次,也能够对不能的精灵仅仅渲染 ...

  7. 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

    blog.csdn.net/totogo2010/article/details/8205810  目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...

  8. cocos2d-x ios游戏开发初认识(九) 音效、粒子系统与存储

    我们知道.一个游戏少不了声音.一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来.顺便在这节中会说下简单的粒子系统和文件存储. 一.声音的播放: ...

  9. cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检測

    玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其他的植物仅仅需触摸那个植物将其拖入到想要摆放的位置,这事实上就是这节要写的触摸事件.还能够发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸, ...

随机推荐

  1. Android:单元测试

    通过单元测试的方法可以轻松判断BUG 第一步:首先在AndroidManifest.xml中加入下面红色代码: 打开AndroidManifest.xml,选择instrumentation ,选择N ...

  2. C++:派生类的构造函数和析构函数

    4.2 派生类的构造函数和析构函数4.2.1 派生类构造函数和析构函数的执行顺序 通常情况下,当创建派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数:当撤销派生类对象时,则先执行派生类 ...

  3. 内核MKDEV(MAJOR, MINOR)宏

    版本:linux-2.6.24.4宏:    MKDEV(MAJOR, MINOR);  说明: 获取设备在设备表中的位置.        MAJOR   主设备号        MINOR   次设 ...

  4. IP地址分类及私网IP

    5类IP地址: IP地址共有32位字节,其中A~C类IP地址由类标识号.网络地址和主机地址组成,A类标识最高位为0,网络地址为1字节,主机地址为3字节, B类标识最高位为10,网络地址为2字节,主机地 ...

  5. MemSQL start[c]up Round 2 - online version(DP)

    只有小写字母 那>=2600的直接找单字母串长度大于等于100的就可以了 <2600 的dp找最长回文串 #include <iostream> #include<cst ...

  6. find-all-duplicates-in-an-array(典型的数组中的重复数,不错,我做出来了,可是发现别人有更好的做法)

    https://leetcode.com/problems/find-all-duplicates-in-an-array/ 典型的数组中的重复数.这次是通过跳转法,一个个跳转排查的.因为查过的不会重 ...

  7. JSOI2015 分组赛记

    分组赛结束了,虽然跟我关系不大,但是去了还是学到了不少东西 day1 上午报到,在宾馆遇到大神wzy,orz 好像没有参赛证发了,于是给我发了一个[工作证],233我是工作人员了,高贵冷艳 下午是常中 ...

  8. HDU 2594 (简单KMP) Simpsons’ Hidden Talents

    题意: 有两个字符串,找一个最长子串是的该串既是第一个字的前缀,又是第二个串的后缀. 分析: 把两个串并起来然后在中间加一个无关字符,求next数组即可. #include <cstdio> ...

  9. HDU 1280 前m大的数【哈希入门】

    题意:中文的题目= =将各种组合可能得到的和作为下标,然后因为不同组合得到的和可能是一样的, 所以再用一个数组num[]数组,就可以将相同的和都记录下来 #include<iostream> ...

  10. fancybox 点击 js脚本判断验证,fancybox的宽度高度设置

    当我们在使用fancybox做弹出窗口的时候,可能在弹窗之前就需要判断一些验证条件,例如我这里有个案例,用户必须先得勾选一个 那么怎么做呢?我们用到fancybox的一个onStart方法就可以了 $ ...