cocos2dx使用节点Node对象的作用,特性和使用的时机

12 篇文章 0 订阅

为什么需要理解何时要创建一个Node这个问题

阅读目前在做的项目的代码,有的界面会创建Node,有的不会创建.那么当你去新建一个界面时,你是创建Node还是不创建呢?有什么依据标准这个问题驱动我来研究下Node的使用方法.

Quick-cocos2dx创建Node的方式:display.newNode()

Node的作用:自身在显示上无内容,作其他子类(精灵,按钮等)的容器,实现通过控制Node容器可以整体移动,整体删除的效果。

Node创建后的初始属性:位置为(0,0)和精灵相同,锚点为 (0,0)和精灵(0.5,0.5)不同,尺寸为(0,0)和精灵不同。

Node作为一个不可见的容器尺寸是否有作用?当需要对Node进行触摸事件处理的时候,需要设置Node的大小来控制事件触发区域

Node的使用时机

1.(可用可不用)当需要通过按钮来控制一个整体内容(比较合适的的情况是整体内容里有大量的控件)显示和切换的时候,类似"换页"效果。

比如点击面板左侧按钮需要更换背景内的东西时,可以先删除这个Node,再创建Node添加至背景图,添加需要显示的内容至Node。

如果不使用Node的话,可以先删除背景图(每次切换按钮时相同的部分),再创建背景图,添加需要显示的内容至背景图来实现相同效果。

也就是说使用Node替代了刷新整体内容的父节点(比如精灵,滑动控件等),使用Node可以不用删除重新创建不需要删除的部分。

另外当使用Node时,不要出现setContentSize(x,y),setAnchorPoint(0,0),setPosition(0,0)这种无效的废代码,能少写一行是一行

2.(必用)需要响应点击空白位置的时候, 通常用于置顶层

假设需求:背包中有道具,点击道具需要显示道具详细信息(由背景图,label标签组成),详细信息的zorder置顶,点击任意一个位置,详细信息关闭,效果图如下:

实现这种需求有2种方法:

a.新建一个类,继承node,将详细信息的背景和标签加到这个类中

b.直接创建node,将详细信息的背景和标签加到这个node上,node尺寸需要设置为整个屏幕,层级置顶,支持触摸事件,取消事件吞噬,当收到ended事件时需要删除自身.

结论:创建Node作容器的方式是一种选项,不是必须的,我倾向于不使用Node作为容器,直接将背景作为容器,当需要做页面切换功能时,直接删除和创建背景图,能少创建一个节点是一个。Simpler is better。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ellis1970

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值