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

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

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

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

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

有几个概念必须要理解:

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之间变化。每次你点
击屏幕都会让标签尺寸发生变化.

 

}

04-15 12:58