CCObject.h

2024-01-01 12:58
文章标签 ccobject

本文主要是介绍CCObject.h,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

流程控制(flow control): 非常容易管理不同场景之间的流程控制。
精灵(sprite):快速而方便的精灵用于显示一切可见的元素。
节点(node):基于树结构的分层组织方式,方便管理不同层次的游戏元素,同时提供了统一管理的计时器(scheduler)。
动作(action):应用于精灵或其他游戏元素的动画效果,可以组合成复杂的动作。
特效(effect):包括波浪(wave) 旋转(twirl)和透镜(lens)等视觉特效。
平面地图(tiled map):支持矩形和六边形的平面地图。
菜单(menu):创建游戏中常见的菜单。
用户输入:提供接受用户触摸事件 传感器等输入的简单解决方案。
文档(document):编程指南 api参考 视频教学以及很多简单可靠的测试样例。
MIT许可:免费开放的协议。
基于OpenGL:深度优化的绘图方式,支持硬件加速。


#ifndef __CCOBJECT_H__

#define __CCOBJECT_H__


#include "platform/CCPlatformMacros.h"


NS_CC_BEGIN


/**
 * @addtogroup base_nodes
 * @{
 */


class CCZone;
class CCObject;
class CCNode;
class CCEvent;


class CC_DLL CCCopying
{
public:
    virtual CCObject* copyWithZone(CCZone* pZone);
};


class CC_DLL CCObject : public CCCopying
{
public:
    // object id, CCScriptSupport need public m_uID
// 对象id 在脚本引擎中使用
    unsigned int        m_uID;
    // Lua reference id
    int                 m_nLuaID;
protected:
    // count of references
// 引用数量
    unsigned int        m_uReference;
    // is the object autoreleased
// 标识此对象是否已经设置 autoreleased
    bool        m_bManaged;        
public:
    CCObject(void);
    virtual ~CCObject(void);
    // 释放该对象的引用权
    void release(void);
// 获取该对象的引用权
    void retain(void);
// 把对象放入自动回收池(CCAutoreleasePool) 当回收池自身释放的时候,它会对池中的所有对象执行一次 release()方法,实现灵活的垃圾回收。
// 回收池可以手动创建和释放。除此之外,引擎在每次游戏循环开始之前也会创建一个回收池,在循环结束后释放回收池。
// 因此,即使我们没有手动创建和释放回收池,每一帧结束的时候,自动回收池中的对象也都会执行一下release()方法。
    CCObject* autorelease(void);
    CCObject* copy(void);
    bool isSingleReference(void);
// 获得对象当前的引用计数值
    unsigned int retainCount(void);
    virtual bool isEqual(const CCObject* pObject);


    virtual void update(float dt) {CC_UNUSED_PARAM(dt);};
    
    friend class CCAutoreleasePool;
};




typedef void (CCObject::*SEL_SCHEDULE)(float);
typedef void (CCObject::*SEL_CallFunc)();
typedef void (CCObject::*SEL_CallFuncN)(CCNode*);
typedef void (CCObject::*SEL_CallFuncND)(CCNode*, void*);
typedef void (CCObject::*SEL_CallFuncO)(CCObject*);
typedef void (CCObject::*SEL_MenuHandler)(CCObject*);
typedef void (CCObject::*SEL_EventHandler)(CCEvent*);
typedef int (CCObject::*SEL_Compare)(CCObject*);


#define schedule_selector(_SELECTOR) (SEL_SCHEDULE)(&_SELECTOR)
#define callfunc_selector(_SELECTOR) (SEL_CallFunc)(&_SELECTOR)
#define callfuncN_selector(_SELECTOR) (SEL_CallFuncN)(&_SELECTOR)
#define callfuncND_selector(_SELECTOR) (SEL_CallFuncND)(&_SELECTOR)
#define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR)
#define menu_selector(_SELECTOR) (SEL_MenuHandler)(&_SELECTOR)
#define event_selector(_SELECTOR) (SEL_EventHandler)(&_SELECTOR)
#define compare_selector(_SELECTOR) (SEL_Compare)(&_SELECTOR)


// end of base_nodes group
/// @}


NS_CC_END


#endif // __CCOBJECT_H__

这篇关于CCObject.h的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/559320

相关文章

【六】CocosCreator-CCObject.js源码分析

PS:只是看源码学习过程中把认为重要的内容以笔记的形式记录下来。                本来是想写CCNode的,结果发现CCNode继承BaseNode,BaseNode再继承CCObject,那么,就先来看CCObject吧~         在CCObject类中,他是通过给原型方法赋值来实现类似成员函数相关的功能,如:prototype.destroy = function (

cocos2d-x节点(CCObject.h)API

本文来自http://blog.csdn.net/runaying ,引用必须注明出处! cocos2d-x节点(CCObject.h)API 温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记 对象引用计数器的使用和比较 ///\cocos2d-x-3.0alpha0\cocos2dx\cocoa//对象引用计数器的使用和比较#