[程序学习笔记]cocos2dx从零开始(1)--------渲染框架(一)

本文介绍了cocos2dx游戏引擎的渲染框架,重点讲解了渲染的基础——CCNode类,包括其特性、属性、添加回调函数、添加动作等,并提到了CCNode的树结构和核心家族成员。此外,还探讨了节点的生命周期和内存管理中的引用计数机制。
摘要由CSDN通过智能技术生成

前言:

最近研究了一阵cocos2dx游戏引擎,在此把研究的成果分享给大家,以供大家共同学习和进步。

本文不会介绍cocos2dx的历史以及环境搭建(网上例子很多),我喜欢直奔主题,接下来讲一下cocos2dx的渲染框架。


第一章  渲染框架

做游戏很重要的一个东西,就是渲染,所以渲染框架至关重要,本章主要涉及到节点,场景,导演,精灵,动作等内容。这些类是最常用的一些,可以说是必须掌握的,我们先从节点类开始。


第一节  CCNode类(节点类)


【章外话】

      几乎任何面向对象语言都会有一个超集父类,通常它叫对象类Object,cocos2dx也不免俗,cocos2dx的超集父类叫CCObject,它是该系统一切类的本源。所有的类都继承了CCObject

          继承CCObject你就意味着可以采用引用计数来管理内存,而不是通常的newdelete

      引用计数机制牵扯到三个函数retain(),release(),autorelease()。

      每个对象都会有一个retainCount来记录该对象被引用了多少次,有多少地方在用这个对象。这样会让我们内存管理容易很多,因为只要有一个地方引用着该变量,我们就没有理由释放。当某个地方不想用这个变量只需要将引用的次数减1即可。当没有任何地方引用着该变量的时候,我们就把它释放。引用计数机制就是这个原理。当某个对象被构造(调用构造函数),retainCount为自动变为1,当调用retain()函数时候,retainCount会加1。调用release()和autorelease()的时候,retainCount会减1。然后判断retainCount是否为0,如果为0,将自动释放对象所占用的空间。

release()和autorelease()貌似执行的操作是一样的,它们有何区别?主要区别就是,release()会立刻执行(retainCount减去1等动作),而autorelease在其作用域内是不会执行的,当对象逃出作用域后才会执行,也就是说新建立的autorelease()对象,在作用域内还可以使用,甚至可以作为返回值返回,而release()的对象就不可用了。

我们只要能保证我们构造和retain的次数,刚好等于releaseautorelease,我们的程序就不会产生内存泄露,否则程序会有内存泄露。[谁构造 谁releaseretain  谁release]


【CCNode的基本特性】

 CCNode是cocos2dx渲染框架的一切类的本源,渲染框架所有的类都继承CCNode,所以它有非常高的重要性,但是实际开发中,它对于程序员来讲通常是透明的,我们通常会使用它的子类,而不是它。但是我们要对它的大部分特性和属性非常清楚。

渲染框架的特性(CCNode的特性):

(1)可以加任何子节点

(2)可以计数回调函数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值