创建一个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:64];
// 从当前CCDirector得到当前屏幕的尺寸
CGSize size = [[CCDirector sharedDirector] winSize];
// 将标签定位在屏幕中央
label.position = ccp( size.width /2 , size.height/2 );
// 将标签添加到视图层中
[self addChild: label];
return self;
}
首先,在init方法中做两处修改:一是启用触摸输入,二是设置一个以后可以用来调用对象的标记:tag。在列表2-3中标出了这两处修改:
-(id) init
{
if( (self=[super init]) ) {
// 生成和初始化一个标签对象,在2d中标签有3种,CCLabelTTF是其中一种
CCLabelTTF *label = [CCLabelTTF labelWithString:@"Hello World" fontName:@"Marker Felt" fontSize:64];
// 从当前CCDirector得到当前屏幕的尺寸
CGSize size = [[CCDirector sharedDirector] winSize];
// 将标签定位在屏幕中央
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 *)[self getChildByTag:10];
CCNode *node=[self getChildByTag:10];
//验证返回的节点是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之间变化。每次你点 击屏幕都会让标签尺寸发生变化.
}