update這個函數,在CCObject中就已經以virtual的方式存在了,是以在cocos2d-x幾乎所有的類裡這個函數都是內建下來了的。開發自己的派生類時,函數命名最好意識到這一點,否則很容易起成一樣的名字,容易造成混淆。
另外,調用CCNode::scheduleUpdate()時,預設的行為就是每一幀調用這個update()函數。
是以overide update函數的一個典型場景就是:在自己的派生的layer類的init函數裡調用scheduleUpdate,用update更新遊戲狀态
附update最初的定義代碼如下
class CC_DLL CCObject : public CCCopying
{
public:
// object id, CCScriptSupport need public m_uID
unsigned int m_uID;
// Lua reference id
int m_nLuaID;
protected:
// count of references
unsigned int m_uReference;
// count of autorelease
unsigned int m_uAutoReleaseCount;
public:
CCObject(void);
virtual ~CCObject(void);
void release(void);
void retain(void);
CCObject* autorelease(void);
CCObject* copy(void);
bool isSingleReference(void) const;
unsigned int retainCount(void) const;
virtual bool isEqual(const CCObject* pObject);
virtual void acceptVisitor(CCDataVisitor &visitor);
virtual void update(float dt) {CC_UNUSED_PARAM(dt);};
friend class CCAutoreleasePool;
};