cocos2dx3.0 Ref

cocos2dx中所有对象都继承于Ref,或者继承于 Ref和Clonable

Ref中就是维护了一个计数器,用于判断该继承于Ref的对象是否应该delete

class CC_DLL Ref
{
public:

	//计数加1
    void retain();

	//计数减1,如果为0,删除对象
    void release();

	//添加到对象池中,别忘了PoolManager(对象池管理器) 管理AutoreleasePool(对象池),AutoreleasePool管理Ref
    Ref* autorelease();

	//得到当前的计数
    unsigned int getReferenceCount() const;

protected:

	//创建时计数设为1
    Ref();

public:

    virtual ~Ref();

protected:
    /// count of references
	//计数变量
    unsigned int _referenceCount;

	//友元类
    friend class AutoreleasePool;

#if CC_ENABLE_SCRIPT_BINDING
public:
    /// object id, ScriptSupport need public _ID
    unsigned int        _ID;
    /// Lua reference id
    int                 _luaID;
#endif
};

cocos2dx3.0 Ref

时间: 2024-10-31 03:02:33

cocos2dx3.0 Ref的相关文章

c++ 基础学习: 左值 概念cocos2d-x3.0的实际应用

左值:概念baidu 1.2.6.2 与Cocos2d-x内存管理的结合 在2.x的使用场景中,CCArray和CCDictionary通常被分配在堆上,我们不得不需要考虑在适当的地方释放其内存.新的容器类不再继承自Ref(2.x中的CCObject),新的容器类通常应该被分配在栈上来使用,这简化了内存管理,我们应该将精力放在容器元素而不是容器本身的内存管理上. Vector中的T和Map<K,V>中的V必须是Ref类型,因为它们需要结合Cocos2d-x的内存管理方式一起工作.这简化了容器中

cocos2d-x3.0 ListView

.h #include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" #include "cocostudio/CocoStudio.h" USING_NS_CC; USING_NS_CC_EXT; using namespace ui; void selectedItemEvent(Ref *pSender, ListViewEventType typ

Cocos2d-X3.0 刨根问底(七)----- 事件机制Event源码分析

这一章,我们来分析Cocos2d-x 事件机制相关的源码, 根据Cocos2d-x的工程目录,我们可以找到所有关于事件的源码都存在放在下图所示的目录中. 从这个event_dispatcher目录中的文件命名上分析 cocos2d-x与事件相关的类一共有四种, Event, EventListener,EventDispatcher, Touch分别为 事件,事件侦听器,事件分发器,触摸 我们先从Event类开始. 打开CCEvent.h文件 /** * Base class of all ki

Cocos2d-x3.0下实现循环列表

本文的实现是參照我之前在做iOS时实现的一个能够循环的列表这里用C++重写一遍. 效果: 原文地址:http://blog.csdn.net/qqmcy/article/details/27393011 用法:能够使用创建project时的HelloWorld測试 ,h文件里加入循环列表的监听回调 void djInfiniteScroll(Ref* sender); .cpp #include "DJInfiniteScrollPicker.h" DJInfiniteScrollPi

Cocos2d-x3.0 RenderTexture(一) 保存

.h #include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" #include "cocostudio/CocoStudio.h" USING_NS_CC; USING_NS_CC_EXT; using namespace ui; RenderTexture* _target; Vector<Sprite*> _brushs; voi

cocos2d-x3.0 Slider

.h #include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" #include "cocostudio/CocoStudio.h" USING_NS_CC; USING_NS_CC_EXT; using namespace ui; RichText* _richText; Text* alert; .cpp Size widgetSize = D

Cocos2d-x3.0 Button

Size widgetSize = Director::getInstance()->getWinSize(); Text* alert = Text::create("Layout", "fonts/Marker Felt.ttf", 30 ); alert->setColor(Color3B(159, 168, 176)); alert->setPosition(Point(widgetSize.width / 2.0f, widgetSize

cocos2d-x3.0 RichText

.h #include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" #include "cocostudio/CocoStudio.h" USING_NS_CC; USING_NS_CC_EXT; using namespace ui; RichText* _richText; void touchEvent(Ref *pSender, TouchEv

cocos2dx3.0 超级马里奥开发笔记(一)——loadingbar和pageview的使用

学完cocos2dx课程的第一个项目选择了超级玛丽.可以说有自己的想法,简单但是确实不简单. 我花了一天把一份2.1版本的超级玛丽源码升级到了3.0,改改删删,参考那个源码虽然好多不懂,但是马虎升级成功,游戏正常玩耍. 本着不为把游戏做出来而写代码的想法,罗列了一下这个游戏可以使用到的知识点.数据持久化的三种方式.loading页面.tmx地图解析.cocosStudio场景.屏幕适配.关卡如何选择.代码结构的优化(各种类的抽象继承),在基本功能出来后可以自己去设计变态关卡等. 两天实现了loa