cocos2d-x 3.0 Node与Node层级结构
节点解释: 节点是场景图的基本元素。场景图的基本元素必须是节点对象或者是节点对象的子类。
其中主要可以看到Layer、MenuItem、Scene、Sprite、TMXTiledMap(解析and渲染TMX地图)、ParticleSystem(粒子系统基类)等等
Node是这些类的根类
节点的基本操作
- 创建节点
Node* childNode = Node::Create(); - 增加新的子节点
node->addChild(childNode,z深度,tag); - 查找子节点
Node* node=node->getChildByTag(tag) - node->removeChildTag(tag,true)删除子节点,并停止所有该节点上的一切动作
- node->removeChild(childNode)通过Node指针删除节点
- node->removeAllChildrenWithCleanup(true)删除所有子节点,并停止这些子节点上的一切动作
- node->removeFromParentAndCleanup(true) 从父Node中删除节点,并停止所有该节点上的一切动作
Node的重要属性
- anchorPoint锚点
锚点指定了贴图上和所在节点原点(也就是设置位置的点)
锚点的默认值是(0.5,0.5),表示的并不是一个像素点,而是一个乘数因子。(0.5,0.5)表示锚点位于贴图长度乘以0.5和宽度乘以0.5的地方,即贴图的中心。
改变锚点的值虽然可能看起来节点的图像位置发生了改变,但其实并不会改变节点的位置,其实变化的只是贴图相对于你设置的位置的相对位置,相当于你在移动节点里面的贴图,而非节点本身。
position=(5,5),anchorPoin=(0.5,0.5)
position=(5,5),anchorPoin=(0,0)
position=(5,5),anchorPoin=(0.66,0.5)
游戏循环和调度
每一个游戏程序都有一个循环来不断运行,它是由导演对象来管理维护。如果需要场景中的精灵运动起来,我们可以在游戏循环中使用定时器(Schedule)对精灵等对象的运动进行调度,因为Node类封装了Schedule类,所以我们也可以直接使用Node中调用函数
Node中调用函数主要有
- void ScheduleUpdate(void)每个Node对象只要调用该函数,那么这个Node对象会定时地每帧回调用一次自己的update(float dt)函数
- void schedule(SEL_SCHEDULE selector,float interval)与scheduleUpdate函数功能一样,不同的是我们可以指定回调函数(通过selector指定),也可以更加需要指定回调时间间隔
- void unscheduleUpdate(void) 停止update(float dt)函数调度
- void unscheduleAllSelectors(void)可以停止调度
cocos2d-x 3.0 Node与Node层级结构的更多相关文章
- Cocos2d-x Lua Node与Node层级架构
Cocos2d-x Lua采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结 ...
- cocos2d-x中Node与Node层级架构
Cocos2d-x采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结构中的节 ...
- error eslint@5.12.0: The engine "node" is incompatible with this module.
初始化 react项目时报错: error eslint@5.12.0: The engine "node" is incompatible with this module. E ...
- windows平台 - 0基础学习node.js(一)
首先得明白node.js做什么用的: 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Nod ...
- k8s1.13.0二进制部署-node节点(四)
Master apiserver启用TLS认证后,Node节点kubelet组件想要加入集群,必须使用CA签发的有效证书才能与apiserver通信,当Node节点很多时,签署证书是一件很繁琐的事情, ...
- 高屋建瓴 cocos2d-x-3.0架构设计 Cocos2d (v.3.0) rendering pipeline roadmap(原文)
Cocos2d (v.3.0) rendering pipeline roadmap Why (the vision) The way currently Cocos2d does rendering ...
- [Node.js] Node + Redis 实现分布式Session方案
原文地址: http://www.moye.me/?p=565 Session是什么? Session 是面向连接的状态信息,是对 Http 无状态协议的补充. Session 怎么工作? Sessi ...
- node --experimental-modules & node.js ES Modules
node --experimental-modules & node.js ES Modules how to run esm modules in node.js cli $ node -v ...
- nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &
nohup和&后台运行,进程查看及终止 &后台运行 登出ssh终端,进程会被自动kill掉 但是nohup >>XX.log 2>&1 & 登出终 ...
随机推荐
- 用Android studio进行 OpenCV 开发的第一个项目
我的天! 折腾了好久终于搭建成功了第一个项目. 项目环境: Windows 7 家庭普通版 64位 Android studio 1.5.1 OpenCV-2.4.9-android-sdk 基于 ...
- Struts2_访问Web元素
取得Map 类型的 request,session,application, HttpServletRequest,HttpSession,ServletContext的引用. 分访问 Map 类型和 ...
- 域名指向新的服务器IP后不能访问的解决办法
不能访问是因为本地DNS缓存,缓存清除方法:dos命令窗口输入ipconfig/flushdns ,回车即可.
- Description Resource Path Location Type Java compiler level does not match the version of the installed Java project facet Unknown Faceted Project Problem (Java Version Mismatch)
project 编译问题,需要三处的jdk版本要保持一致,才能编译通过. 1.在项目上右键properties->project Facets->修改右侧的version 保持一致 2. ...
- css3弹性盒子
CSS3 弹性盒子(Flex Box) 弹性盒子是 CSS3 的一种新的布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时 ...
- 2018年Linux运维人员必会开源运维工具体系总结
操作系统:Centos,Ubuntu,Redhat,suse,Freebsd 网站服务:nginx,apache,lighttpd,php,tomcat,resin数据库:MySQL,MariaDB, ...
- 2017.10.20 jsp用户登陆界面连接数据库
用户登陆界面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...
- 利用python中的PIL进行矩阵与图像之间的转换
1.图像转换为矩阵 matrix = numpy.asarray(image) 2.矩阵转换为图像 image = Image.fromarray(matrix)
- Meshlab
打开ply文件的软件,Meshlab. 下载 http://yunpan.cn/cgapukD2La9Se (提取码:37f1) http://pan.baidu.com/s/1pJLnWqJ
- 第2章-如何安装KEIL5—零死角玩转STM32-F429系列
第2章 如何安装KEIL5 集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章内 ...