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)可以停止调度

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏瓜大三哥

UVM(十二)之各register model续

UVM(十二)之各register model续 1. register model的必要性 假设有如下的DUT: ? 这个DUT相当的简单,它只有一个寄存...

26350
来自专栏Micro_awake web

HTML&CSS书写规范

第一部分:HTML书写规范: 1.1 HTML整体结构: 1.1.1:HTML基础设施: 文档以"<!DOCTYPE...>"首行顶格开始,推荐使用"<!DOC...

257100
来自专栏技术点滴

抽象工厂模式(Abstract Factory)

抽象工厂模式(Abstract Factory) 抽象工厂模式(Abstract Factory)[Kit] 意图:提供一个创建一系列相关或相互依赖对象的接口,...

269100
来自专栏前端儿

SASS用法指南

SASS是ruby写的,所以要想将sass编译成css文件,就给配上ruby环境。

19720
来自专栏漫漫前端路

在 Vue 中使用 TypeScript 的一些思考(实践)

两种形式输出结果一致,同是创建一个 Vue 子类,但在书写组件选项如 props,mixin 时,有些不同。特别是当你使用 Vue.extend() 时,为了让...

47730
来自专栏Brian

Python进阶教程(三)

Python 进阶 我们在Python进阶教程(二),介绍了一些Python进阶用法。今天给大家介绍的是和c/c++混合编程的用法。我们都知道特别是Python...

39040
来自专栏java一日一条

Web性能优化系列:10个JavaScript性能提升的技巧

Nicholas Zakas是一位 JS 大师,Yahoo! 首页的前端主程。他是《高性能 Javascript》的作者,这本书值得每个程序员去阅读。

10520
来自专栏飞雪无情的博客

Go语言实战笔记(二十五)| Go Struct Tag

在上一篇介绍Go反射的时候,提到了如何通过反射获取Struct的Tag,这一篇文章主要就是介绍这个的使用和原理,在介绍之前我们先看一下JSON字符串和Struc...

13120
来自专栏Golang语言社区

如何理解 golang nil

golang 中的 nil 是不同于其他语言的,为了更好的理解 nil,在此我将尝试一步一步揭示 nil 在 golang 中的一些操作和现象。 1. nil ...

34250
来自专栏三丰SanFeng

字节对齐

什么是对齐,以及为什么要对齐: 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变...

29050

扫码关注云+社区

领取腾讯云代金券