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

来源:互联网 发布:如何进行seo 编辑:程序博客网 时间:2024/05/20 00:15
学习cocos2d需要一定的编程基础,最好了解objective-c的语法。至于下载和安装的过程网上有很多,这里不多介绍,直接进入项目的学习。

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

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

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

---------------------------------------------------------------------------------------------------------------
有几个概念必须要理解:

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:@"HelloWorld" fontName:@"MarkerFelt" fontSize:64];


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

CGSize size =[[CCDirectorsharedDirector]winSize];

 

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

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

 

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

[self addChild: label];

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

return self;

}

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

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

 -(id)init

{

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

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

CCLabelTTF *label =[CCLabelTTF labelWithString:@"HelloWorld" fontName:@"MarkerFelt" fontSize:64];


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

CGSize size =[[CCDirector sharedDirectorwinSize];

 

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

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

 

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

[self addChild:label];

 

//添加标签tag

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

//启动可触摸模式

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

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

return self;

}


(4)响应触摸的函数

 

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

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

  CCNode*node=[self getChildByTag:10];

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

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

  CCLabelTTF*label=(CCLabelTTF*)node;

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


0 0