cocos2dx学习之路(二)
Cocos2d-x核心概念:
一、场景(Scene)和层(Layer)
场景:特定时间、特定地点发生的事件的集合
例如:
进入一个游戏的战斗场景后,整个的一个战斗过程就是一个战斗场景。
登录游戏的时候,需要输入账号密码,那么整个登录过程就是一个登录场景。
登录后与一个进度条的加载,叫资源加载场景。
层:图层
一个场景至少有一个层,可以有多个层。
二、精灵(Sprite)
在屏幕上移动的对象,它能被控制(在屏幕上移动的对象,可以被控制,但不是一定)
例如:吃鸡游戏人物角色,枪,车 都是精灵
背景图片,可以移动的角色,可以控制的手指,序列帧动画,骨骼动画。
运动方式:移动、旋转、缩放、动画等。
三、UI组件
界面上的元素
例如:按钮、文本框、文本标签、列表、进度条、滑动条、菜单(cocos2d菜单不好用,一般自己做),复选框。
四、导演(Director)
控制电影制作流程,指导团队完成各项任务。(可以看作一个总控)
节点类Node
什么是游戏元素?
游戏中的场景、精灵、文本、地图、菜单、层等任何对象。
Node的属性:
元素的基本属性 | Node的属性 |
---|---|
元素标识 | _tag |
元素的名称 | _name |
元素间的位置关系 | _position,_positionZ,_anchorPoint |
元素的大小 | _contenSize |
元素的旋转角度 | _rotationX,_rotationY,_rotationZ-X,_rotationZ-Y |
元素的缩放系数 | __scaleX,_scaleY,_scaleZ |
元素是否显示 | _visible |
如果节点被添加到一个父节点中,那么父节点的属性变化会被应用到子节点中。
创建Node对象:
cocos2d-x中创建对象使用create,而不是new关键字。
auto node = Node:: create();//创建Node对象
node -> setTag(100); //设置标识
node -> setName("容器节点") //设置元素名称
node -> setPosition(Vec2::ZERO);//设置坐标位置
node -> setAnchorPoint(Vec2::ANCHOR_MIDDLE);//设置锚点在正中心
node -> setRotation(90);//设置旋转90°
node -> setContentSize(Size(100*100));//设置大小100*100
node -> setScale(10);//设置放大10倍显示
node -> setVisible(false);//设置不显示
在Node上增加子节点:
在父节点中默认显示层级,添加默认元素标识的子节点。
parentNode->addChild(node);
在父节点中指定显示层级,添加默认元素标识的子节点
parentNode->addChild(node,zorder);
在父节点中指定显示层级,添加指定元素标识的子节点
parentNode->addChild(node,zorder, tag);
Node类中提供了三种添加子节点的重载方法:
1、Node::addChild(Node*node)
2、Node::addChild(Node*node,int zorder)
2、Node::addChild(Node*node,int zorder, int tag)
查找子节点
通过元素标识查找(优先考虑)
auto node = parentNode->getChildByTag(tag);
通过元素名称查找
auto node = parentNode->getChildByName(tag);
**遍历查找**
Node* findNode = nullptr;
int findTag = 20;
for(auto node:parentNode->getChildren())
{if(Node->getTag() == findTag){findNode = node;break;}
}```
**删除子节点:**
删除指定元素标识的节点
parentNode->removeChildByTag(tag);
删除指定元素名称的节点
parentNode->removeChildByName(name);
删除指定节点
parentNode->removeChild(child);
删除所有子节点
parentNode->removeAllChildren();
cocos2dx学习之路(二)相关推荐
- Cocos2d-x学习之路(一)
前文 我呢,现在在一家手游公司上班,但是我之前一直学习的是做Android应用的,来这家公司后就在做SDK渠道接入的工作,工作好清闲啊,但是感觉自己来了一个多月了也没什么提高.可能是我太笨了吧.哇咔咔 ...
- 前端Vue学习之路(二)-Vue-router路由
Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...
- Hive学习之路(二):Hive表操作详讲
操作内容简介 一.操作前的准备 二.Hive表操作详讲 1. 创建数据库 2. 查看所有数据库/表 3. 在Hive上直接操作HDFS 4. 在Hive上直接执行终端命令 5. 创建数据表/查看表的信 ...
- python 剑指offer 学习之路(二)
剑指offer 学习之路 合并两个排序的链表 树的子结构 顺时针打印矩阵 包含min函数的栈 从上往下打印二叉树 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 数组中出现次数超过 ...
- zigbee学习之路(二)点亮LED
一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2 ...
- 我的cocos2d-x学习之路
cocos2d-x的一些学习资源: 1,首先是,Cocos2d-x高级开发教程.pdf 2,youku上有一些视频教程,比如:龙灵修的专辑,http://i.youku.com/u/id_UNTc4N ...
- Spring Boot 学习之路二 配置文件 application.yml
一.创建配置文件 如图所示,我们在resources文件夹中新建配置文件application.yml 结构图 二.一些基本配置 server: port: 8090 //配置端口session-ti ...
- C++学习之路二:C++
目录 二.C++ 1. C,java,C++区别 2. C++ 对象模型(C++ class底层原理) 2.1 基本对象模型与C++对象模型 2.2 C++ 构造函数模型 2.3 C++继承的底层原理 ...
- 3D点云之PCL学习之路(二)
VTK的基本知识(1) PCL使用的第三方库有 boost.eigen.FLANN.OpenNI2.Qhull.VTK. PCL的显示部分就是基于VTK来实现的.简单介绍一下这个库.主要参考依据是:& ...
最新文章
- 各种汇编器masm masm32 fasm nasm yasm gas的区别
- React从入门到精通系列之(12)深入理解JSX
- 用Docker打造多版本PHP运行环境
- 第3章 简单爬虫架构
- 5位最具影响力的程序员
- php 数组 json字段去不全,json_encode – PHP给出了不完整的json字符串
- 《走出软件作坊》读后感
- OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
- TCP/IP review之 静态路由
- 【图像融合】基于matlab高斯金字塔+拉普拉斯金字塔彩色水下图像融合【含Matlab源码 1629期】
- c语言dp算法解决背包问题,DP求解完全背包问题及其优化原理
- RtlUnicodeStringToAnsiString中第三个参数引发的bsod
- JAVA购物商城系统毕业设计 开题报告
- QQ空间 安卓App热补丁动态修复技术介绍
- 《深入学习VMware vSphere 6》——2.3 在VMware Workstation虚拟机中安装ESXi 6
- android自定义打电话界面,两种Android打电话实现方法
- Android发送短信的两种方法
- DUM 与 SIPstack多线程
- 砼匠无人值守称重系统硬件图文设置
- 27.FFmpeg+OpenGLES+OpenSLES播放器实现(一.音视频基础知识概要)