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

导演类(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);

效果如下





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值