Cocos2d-x中常用的类
Cocos2d-x中常用的类
Node节点类
- 什么是游戏元素?
- 游戏中的场景、精灵、文本、地图、菜单、层等任何对象都是节点。
Cocos2d-x中用Node类来对应游戏元素的概念,它是Cocos2d-x最为重要的根类。
Node的属性
节点关系
- 假设有三个精灵,其中两个精灵被添加到了父精灵。如果给父精灵旋转了一个角度,那么子精灵会有什么变化呢?
如果节点被添加到一个父节点中,那么父节点的属性变化会被应用到子节点中。
对Node的操作
创建Node对象
auto node = Node::create();//创建Node对象
node->setTag(100);//设置标识
node->setName("容器节点");//设置元素名称
node->setPosition(Vec2(Vec2::ZERO));//设置坐标位置
node->setAnchorPoint(Vec2::ANCHOR_MIDDLE);//设置锚点处理正中心
node->setRotation(90);//设置旋转90度
node->setContentSize(Size(100, 100));//设置大小100*1000
node->setScale(10);//设置放大10倍显示
node->setVisible(true);//设置显示
node->setColor(Color3B::WHITE);
this->addChild(node);
增加子节点
- 在父节点中默认显示层级,添加默认元素标识的子节点
parentNode->addChild(node);
- 在父节点中指定显示层级,添加默认元素标识的子节点
parentNode->addChild(node,zorder);
- 在父节点中指定显示层级,添加指定元素标识的子节点
parentNode->addChild(node,zorder,tag);
TIPS:
Node类提供了三种子节点的重载方法:
- Node::addChild(Node* node);
- Node::addChild(Node* node,int zorder);
- Node::addChild(Node* node,int zorder,int tag);
查找子节点
通过元素标识查找
auto node = parentNode->getChildByTag(tag);
通过元素名称查找
auto node = parentNode->getChildByName(name);
遍历查找
Node* findNode = nullptr; int findTag = 20; for(auto node : parentNode->getChildren()) {if(node->getTag() == findTag){findNode = node;break;}//得到下一个node }
TIPS:
在查找子节点的过程中,使用getChildByTag优于getChildByName,由于name是字符串,而tag是整型。
当有非常多的节点需要查找的时候,我们尽可能使用遍历查找来查找节点。因为不管是getChildByTag还是getChildByName内部都是一个遍历查找,当要查找多个节点的时候我们使用它们查找我们会执行多次遍历,而使用遍历查找我们只执行一次遍历。
删除节点
删除指定元素标识的节点
parentNode->removeChildByTag(tag);
删除指定元素名称的节点
parentNode->removeChildByName(name);
删除指定节点
parentNode->removeChild(child);
删除所有子节点
parentNode->removeAllChildren();
小结
- Node类是Cocos2d-x中最重要的根类
- Node的基本属性
- 描述元素间的关系
- 描述元素本身的属性
- 节点与节点之间的关系
- 使用Node方法
- 对Node的操作
- 创建节点、增加子节点、删除子节点、查找子节点
- 对Node的操作
Director类
- 一个典型的游戏流程实例
Director类对应电影拍摄中导演的概念,是Cocos2d-x引擎中的“总指挥”。
Director类和Node类都继承自Ref类,Ref是Cocos2d-x中的内存管理机制。
Director类的职责
- 访问和切换场景
- 访问Cocos2d-x的配置信息
- 暂停、继续和停止游戏
- 转换坐标
Director类的使用
访问场景
Director::runWithScene(Scene* scene)
替换场景
Director::replaceScene(Scene* scene)
Cocos2d-x中的字符串
字符串
Cocos2d-xV3.10之前可以使用cocos2d::String,之后的版本不建议使用。
- C语言、C++、Cocos2d-x字符串风格对比
- C语言、C++、Cocos2d-x字符串风格相互转换
//String *content = String::create("hello");
String *content = String::createWithFormat("hello,%s","world");
content->append("!!!");//拼接字符串
log("string length:%d",content->length());//获取长度
const char* str = content->getCString();
cocos2d::String类的使用
StringUtils
Cocos2d-xV3.10之后推出的新的处理字符串的工具集合。
#include<string>
using namepsace std;
string content = StringUtils::format("hello,%s","world");
const char* str = content.c_str();
Label类
Cocos2d-x中的字体
- BMFont
- TTF(TrueTypeFont)
- SystemFont
创建Label标签
Label::create("My Label Text","Arial",20); Label::create("myFont.ttf","My Label Text",20);
TIPS:
- 创建BMFont需要.fnt和.png文件。
- BMFont,如果想不失真的缩放,就要提供多种字体文件。
- 使用TTF很方便,不需要为每种尺寸和颜色单独使用字体文件。
auto visibleSize = Director::getInstance()->getVisibleSize();
//Label *label = Label::create("Hello World!","Arial",72);
auto label = Label::createWithSystemFont("你好,世界!","微软雅黑",39);
label->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
//坐标位置设置在屏幕正中心
label->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));
this.addChild(label);
Cocos2d-x中常用的类相关推荐
- java 中常用的类
java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l static double abs(double a) 获取double 的绝对值 l sta ...
- C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用?
C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用? using System; using System.Collections.Generic; using System. ...
- java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing
java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...
- Java中常用的类,包,接口
Java中常用的类,包,接口 包名 说明 java.lang 该包提供了Java编程的基础类,例如 Object.Math.String.StringBuffer.System.Thread等,不使用 ...
- JAVA语言异常_Java语言中常用异常类EoFException是用来处理( )异常的类_学小易找答案...
[填空题]Java语言中常用异常类ClassNotFoundException是用来处理 ( )的异常的类 [填空题]Java语言声明 ( ) 类为会产生"严重错误"的类 [简答题 ...
- java有哪些类_Java中常用的类有哪些?
展开全部 一. System: 1. 首先是System类,因为从一开始从接触java起,我32313133353236313431303231363533e58685e5aeb9313333 ...
- Java中常用的类及其特点
Java中的内部类有四种(内部类作用1.封装装类型. 2.直接访问外部类成员. 3.回调.)内部类,方便他们的外部类调用,一般不会被其它类使用,比如事件监听器之类的,外部类刚好继承了一个别的类,如果你 ...
- Cocos2d—android 中常用的工具类
<span style="font-size:18px;"> 在开发游戏过程中通常会用到一个经常编写的重复的代码,比如加载游戏地图,从地图中加载指定点的集合,序列帧的播 ...
- C++ i/o类库中 常用流类
类名 作用 在哪个头文件中声明 ios 抽象基类 iostream ------------------------------------------------------------------ ...
- Java concurrent包中常用的类
1. Atomic类 基于 compareAndSwap,即CAS操作实现. CAS指令有两个步骤:冲突检测和更新操作. CAS指令需要3个操作数:内存位置(V),旧的预期值(A),新值(B).CAS ...
最新文章
- java远程调用笔记
- uniapp 生成Android证书及.keystore转.jks、.pem
- Subversion For Windows的安装与使用
- ReactNative用指定的设备/模拟器运行项目
- Vuex与登录状态保存
- 升级Hbase,解决bug问题
- python常用快捷键、写代码事半功倍_Pycharm常用快捷键总结及配置方法
- 【今日CS 视觉论文速览】31 Dec 2018
- 卸载exchange后注意事项
- Linux网络 - 数据包的接收过程
- mysql怎么创建普通用户_mysql怎么创建用户账户
- 从stm32转向Linux,STM32MP1Distrib
- 5-5 多边形周长计算(继承)
- delphi CnPack
- rectangle函数与Rect函数的用法
- WPS 使用宏 下载 VBA
- python 列表长度_python求列表长度
- 金三银四,作为Java程序员的你为什么面试总拿不到高薪?
- php订阅号怎么借服务号权限,微信订阅号已经认证能否有网页授权功能
- linux 下 scp 的用法