您的位置:首页 > 移动开发 > Cocos引擎

【学习笔记2 --- Cocos2D-x核心类 (1)节点类】

2013-12-16 17:40 218 查看


导演类(CCDirector)---- 制定游戏的运行规则,让场景、布景、人物精灵有序进行。

场景类(CCScene) ---- 是一个关卡

布景类(CCLayer) ---- 是关卡里的背景,不同的关卡(场景)需要不同的背景(布景),一个场景可有包含多个布景层。

人物精灵(CCSprite)---- 游戏中的角色,如玩家控制的、敌人、NPC。

1.节点类

节点类(CCNode)是场景、布景层、人物精灵的基类。

最常用的节点类包括 --- 场景类(CCScene)、布景层类(CCLayer)、人物精灵类(CCSprite)、菜单类(CCMenu)

一般使用节点类(CCNode)的场合有两个:

1)需要一个父节点来管理一批子节点

2)自定义一个在屏幕上显示的对象,让新定义的这个类继承自CCNode

V2.0版本之后,使用create函数进行创建。

1.1 坐标系



屏幕坐标系中,原点在屏幕左上角,x轴向右,y轴向下。

世界坐标系与OpenGL坐标系方向一致。

CCNode类设置位置使用的坐标系方向和OpenGL方向一致。

1.2 仿身变换

指在线性变换的基础上加上平移,比如游戏中使用的旋转、缩放、平移都是仿射变换。

2.实验--通过节点来控制屏幕中的对象

新建一个HelloWorld项目,编译一下,



在windows平台中文件的执行顺序是main入口-----AppDelegate入口----HelloWorldScene场景,



打开HelloWorldScene.cpp文件,在init中做如下两个实验:

实验1:

// add your codes below... 在这个注释下面添加和修改代码

// Step1:将新创建的节点当作子节点加入到HelloWorld场景类中

//创建一个节点

CCNode *anode = CCNode::create();

//将节点作为子节点加入场景类中

this->addChild(anode,0);

// Step2:将原本作为子节点的加入HelloWorld场景中的对象,使用addChild函数作为子节点添加到anode中

//this->addChild(pMenu, 1);

anode->addChild(pMenu,1);

//this->addChild(pLabel, 1);

anode->addChild(pLabel,1);

//this->addChild(pSprite, 0);

anode->addChild(pSprite,0);

// Step3:运行项目,发现和修改前没有区别。



实验2 设置节点的位置

在 bRet = true;的前面,加上一句

anode->setPosition(ccp(100,50));

再编译运行一下:



实验3 设置缩放

anode->setScale(0.8);



实验4 整体旋转

在main.cpp中可以看到,当前我这个窗口大小是480 * 320 (eglView->setFrameSize(480, 320);),将锚点移动一下,移到左上角(x=0, y=max)

anode->setPosition(ccp(0,320));

anode->setRotation(90);

效果如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: