本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!