Cocos2d-x 内存管理和数据结构

成为vip会员,免费看所有精品课程
  • 目录

    目录 收起>

    这节课,我们将要学习 Cocos2d-x 3.0 中的内存管理机制Ref对象。在 Cocos2d-x 中,几乎所有类都继承于 Ref 类。它用于管理我们的内存,我们将会在本课程中对它进行详细的介绍以便更好的掌握 Cocos2d-x 。之后我们还会讲解在 Cocos2d-x 中经常会使用到 Vector、Map、Value 这3个数据结构, Vector 封装于 C++ 的 vector,可以提供很好的列队功能。Map 则可以进行 key 和 value 的一对一得匹配,可以快速方便得查找到指定对象。而 Value 则是一个富有超能力的对象,它不仅可以代表任何值,还可以进行一些数据类型的转换。

    1.Ref 类是如何管理内存的 00:08:42

    C++ 和 Java 不一样,Java天生就有一套方便的垃圾回收机制,当我们不需要使用某个对象时,给它赋予null值即可,而 C++ new 了一个对象之后,不使用的时候通常需要 delete 掉。于是,Cocos2d-x 就实现了一套内存管理机制,使用一个整数记录当前被引用的次数,如果当前的引用次数为0则删除该对象。

    2.Vector 和 Map 00:07:05

    Vector 是什么呢?简单得说,他就是列队。和 C++ 标准库中的 vector 容器一样。可以将元素有序得向列队执行压入弹出等操作。听上去好像他的功能和标准库中得 vector 得功能一样呀。那为什么会有它的存在呢?Vector 主要是为了自动管理 Cocos2d-x 对象而存在的,它只允许将继承于 Ref 的对象存入队列。并且在存入时将引用计数加一,在移除时将引用计数减一。它很好得弥补了标准库中得vector所不能完成的事情。同样 Map 也是一样,它封装于 std::unordered_map 对象。可以快速得随机存储访问对象。且同样必须存入继承与 Ref 的对象,从而实现内存的自动管理。

    3.Value 00:07:58

    Value 是什么呢?看字面意思,就是值。它是一个非常神奇的对象。为什么这么说,因为它可以存放任意类型的值。这里主要受益于 C++ 的 union 关键字。它可以使多个成员共用一块内存空间,这里我们先忽略它。它除了该功能,还可以在整数、浮点数、字符串之间进行数据类型的转换。
  • 提问

    提交问题
  • 下载

  • 线路

    视频太卡?试试切换线路 √ 线路1 √ 线路2
  • 收藏

    收藏课程
  • 分享

连播

连续播放

关灯

关灯模式
视频加载太慢?

我们有两条线路可以选择,试试切换线路吧

Cocos2d-x 内存管理和数据结构

3课时,24分钟2015-05-04
JasonWu
JasonWu

极客学院金牌布道师

课程背景:
Cocos2d 是目前最主流的 2D 手机游戏开发引擎。Cocos2d 的程序员这个名词往往可以联想到高薪、牛逼等字样。学习 Cocos2d 将是踏入 2D 手机游戏最好的选择。


核心内容:
1.Ref 类是如何管理内存的
2.Vector 和 Map于 std 标准库中的 vector 和 map 有什么不同
3.掌握万能的 Value 的使用


软件环境:xCode、Visual Studio


是否提供资料:


课程等级:初级


适合人群:
对 Cocos2d 感兴趣的同学

  • 技术问答
  • 1

    Ref 类是如何管理内存的

    08:42

    C++ 和 Java 不一样,Java天生就有一套方便的垃圾回收机制,当我们不需要使用某个对象时,给它赋予null值即可,而 C++ new 了一个对象之后,不使用的时候通常需要 delete 掉。于是,Cocos2d-x 就实现了一套内存管理机制,使用一个整数记录当前被引用的次数,如果当前的引用次数为0则删除该对象。

  • 2

    Vector 和 Map

    07:05

    Vector 是什么呢?简单得说,他就是列队。和 C++ 标准库中的 vector 容器一样。可以将元素有序得向列队执行压入弹出等操作。听上去好像他的功能和标准库中得 vector 得功能一样呀。那为什么会有它的存在呢?Vector 主要是为了自动管理 Cocos2d-x 对象而存在的,它只允许将继承于 Ref 的对象存入队列。并且在存入时将引用计数加一,在移除时将引用计数减一。它很好得弥补了标准库中得vector所不能完成的事情。同样 Map 也是一样,它封装于 std::unordered_map 对象。可以快速得随机存储访问对象。且同样必须存入继承与 Ref 的对象,从而实现内存的自动管理。

  • 3

    Value

    07:58

    Value 是什么呢?看字面意思,就是值。它是一个非常神奇的对象。为什么这么说,因为它可以存放任意类型的值。这里主要受益于 C++ 的 union 关键字。它可以使多个成员共用一块内存空间,这里我们先忽略它。它除了该功能,还可以在整数、浮点数、字符串之间进行数据类型的转换。

相关课程

  • Cocos2d-x 基础元素

    本课程主要学习 Cocos2d 引擎的运转流程,它是如何开始工作、如何读取我们指定的设置的。之后我们将学习游戏引擎最值得专注的功能。显示对象。在这里我们将讲解导演、场景、图层以及节点的关系,是他们构成了我们屏幕上的画面。最后,我们将学习如何自定义我们的显示对象。有了这些知识,制作一些简单的游戏是绝对没有问题的。

    3课时 29分钟
    初级
    6016人学习
  • Cocos2d-x Action 动作与特效

    本课程我们将主要学习 Cocos2d 引擎中的动作系统,Action。它可以非常简单得实现物体的移动,旋转等动画。之后我们将会学习 Cocos2d 所提供的Action动画特效,它可以制作非常多得酷炫效果。之后我们再额外讲解一下游戏场景切换的动画。它用于衔接两个场景是游戏显得更加丰满且富有诚意。

    3课时 24分钟
    初级
    5614人学习
  • 从 Flash 到 Cocos2d-x 之 GAF 动画

    本课程主要介绍了一个在 Cocos2d-x 中加载并显示Flash动画的解决方案。 GAF 代表 Generic Animation Format(通用动画格式)。GAF 用于将 Flash 动画存储于一个开放的跨平台上,用于在众多游戏开发框架和设备中回放动画。艺术家和动画师可以通过 GAF 使用Flash来创作复杂的动画,并且可以在各种游戏开发框架中无缝地使用这些动画。

    3课时 15分钟
    中级
    6703人学习
  • Cocos2d-JS TMX 地图的使用

    TMX瓦片地图,可以使用一些简单的资源拼凑出非常丰富的地图,在横版过关类游戏中或者是RPG游戏中都非常常用。 这节课我们来学习如何创建瓦片地图,并在代码中加载瓦片地图并控制瓦片地图中的组件。在最后,我们在通过瓦片地图的属性来制作碰撞检测的功能。

    3课时 20分钟
    初级
    3978人学习