cocos2d-x节点(CCObject.h)API
来源:互联网 发布:android编程入门自学 编辑:程序博客网 时间:2024/05/21 17:10
本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(CCObject.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
对象引用计数器的使用和比较
///\cocos2d-x-3.0alpha0\cocos2dx\cocoa//对象引用计数器的使用和比较#ifndef __CCOBJECT_H__#define __CCOBJECT_H__#include "cocoa/CCDataVisitor.h"#include "ccMacros.h"#ifdef EMSCRIPTEN#include <GLES2/gl2.h>#endif // EMSCRIPTENNS_CC_BEGIN/** * @addtogroup base_nodes * @{ */class Object;class Node;/** 定义如何克隆一个对象的接口 */class CC_DLL Clonable{public:/** 返回对象的副本 */ virtual Clonable* clone() const = 0; /** * @js NA * @lua NA */virtual ~Clonable() {}; /** 返回对象的副本 . @过时不再需要建议使用新的 API。使用 clone() 代替 */ CC_DEPRECATED_ATTRIBUTE Object* copy() const { // 使用 "clone" 代替 CC_ASSERT(false); return nullptr; }};class CC_DLL Object{public: /// 对象的 id, ScriptSupport 需要一个 public _ID unsigned int _ID; /// Lua 饮用 id int _luaID;protected: /// 引用计数 unsigned int _reference; /// 统计 autorelease 数量 unsigned int _autoReleaseCount;public: /** * Constructor * *创建后对象的引用计数为1 * @js NA */ Object(); /** * @js NA * @lua NA */ virtual ~Object(); /** * 立即释放所有权. * * 这个对象的引用计数减1 * * 如果引用计数器减少到 0 后这个对象就不存在了 * * @see retain, autorelease * @js NA */ inline void release() { CCASSERT(_reference > 0, "reference count should greater than 0"); --_reference; if (_reference == 0) delete this; } /** * 保持所有权 * *这增加了该对象的引用计数。 * * @see release, autorelease * @js NA */ inline void retain() { CCASSERT(_reference > 0, "reference count should greater than 0"); ++_reference; } /** * 不久的某个时候自动释放所有权. * * 在当前自动释放池里,减少这个对象的引用计数 * * 如果引用计数器减少到 0 后这个对象就不存在了 * * @returns 这个对象自己. * * @see AutoreleasePool, retain, release * @js NA * @lua NA */ Object* autorelease(); /** * Returns 一个 boolean 值,表示这个对象是否只被饮用了一次 *也就是说,这个对象的引用计数器是否是 1. * * @returns 这个对象的引用计数器是否是 1. * @js NA */ bool isSingleReference() const; /** * Returns 这个对象的引用计数. * * @returns 这个对象的引用计数. * @js NA */ unsigned int retainCount() const; /** * Returns 一个 boolean 值,表示这个对象是否和给定对象相等. * * @param object 需要比较的对象. * * @returns True 如果这个对象和 @p 对象 equal, otherwise false. * @js NA * @lua NA */ virtual bool isEqual(const Object* object); /** * @js NA * @lua NA */ virtual void acceptVisitor(DataVisitor &visitor); /** * @js NA * @lua NA */ virtual void update(float dt) {CC_UNUSED_PARAM(dt);}; friend class AutoreleasePool;};typedef void (Object::*SEL_SCHEDULE)(float);typedef void (Object::*SEL_CallFunc)();typedef void (Object::*SEL_CallFuncN)(Node*);typedef void (Object::*SEL_CallFuncND)(Node*, void*);typedef void (Object::*SEL_CallFuncO)(Object*);typedef void (Object::*SEL_MenuHandler)(Object*);typedef int (Object::*SEL_Compare)(Object*);#define schedule_selector(_SELECTOR) static_cast<cocos2d::SEL_SCHEDULE>(&_SELECTOR)#define callfunc_selector(_SELECTOR) static_cast<cocos2d::SEL_CallFunc>(&_SELECTOR)#define callfuncN_selector(_SELECTOR) static_cast<cocos2d::SEL_CallFuncN>(&_SELECTOR)#define callfuncND_selector(_SELECTOR) static_cast<cocos2d::SEL_CallFuncND>(&_SELECTOR)#define callfuncO_selector(_SELECTOR) static_cast<cocos2d::SEL_CallFuncO>(&_SELECTOR)#define menu_selector(_SELECTOR) static_cast<cocos2d::SEL_MenuHandler>(&_SELECTOR)#define event_selector(_SELECTOR) static_cast<cocos2d::SEL_EventHandler>(&_SELECTOR)#define compare_selector(_SELECTOR) static_cast<cocos2d::SEL_Compare>(&_SELECTOR)// 新的 callbacks 基于 C++11#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__)#define CC_CALLBACK_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)#define CC_CALLBACK_2(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__VA_ARGS__)// end of base_nodes group/// @}NS_CC_END#endif // __CCOBJECT_H__
- cocos2d-x节点(CCObject.h)API
- cocos2d-x节点(cocos2d.h)API
- cocos2d-X 节点(CCNode.h)API
- cocos2d-X 节点(CCLayer.h)API
- cocos2d-X 节点(CCMenu.h)API
- cocos2d-X 节点(CCMenuItem.h)API
- cocos2d-X 节点(CCSprite.h)API
- cocos2d-X 节点(CCTexture2D.h)API
- cocos2d-X 节点(SpriteBatchNode.h.)API
- cocos2d-X 节点(CCSpriteFrame.h..)API
- cocos2d-X 节点(CCAnimationCache.h)API
- cocos2d-X 节点(CCCamera.h.)API
- cocos2d-X 节点(CCAction.h)API
- cocos2d-X 节点(CCActionManager.h)API
- cocos2d-X 节点(CCIMEDelegate.h)API
- cocos2d-X 节点(CCLabelAtlas.h)API
- cocos2d-X 节点(CCLabelBMFont.h)API
- cocos2d-X 节点(CCLabelTTF.h)API
- Understanding Unix/Linux Programming 笔记:chapter 13:基于数据报(Datagram)的编程:编写许可证服务器
- cocos2d-x节点(CCDouble.h)API
- cocos2d-x节点(CCFloat.h)API
- cocos2d-x节点(CCGeometry.h)API
- cocos2d-x节点(CCInteger.h)API
- cocos2d-x节点(CCObject.h)API
- linux进程调度
- cocos2d-x节点( CCSet.h)API
- cocos2d-x节点(CCNS.h)API
- Oracle创建sequence和查询sequence
- 轻量级组件与重量级组件的区别
- 大数据时代下的智慧农业
- cocos2d-x节点(CCString.h)API
- cmd