Merge branch 'gles20' of https://github.com/cocos2d/cocos2d-x into iss1520-comments

This commit is contained in:
James Chen 2012-10-23 10:51:05 +08:00
commit 9b644f2757
2 changed files with 50 additions and 8 deletions

View File

@ -29,7 +29,7 @@ THE SOFTWARE.
using namespace std; using namespace std;
NS_CC_BEGIN; NS_CC_BEGIN
static CCNotificationCenter *s_sharedNotifCenter = NULL; static CCNotificationCenter *s_sharedNotifCenter = NULL;
@ -214,4 +214,4 @@ CCObject *CCNotificationObserver::getObject()
return m_object; return m_object;
} }
NS_CC_END; NS_CC_END

View File

@ -28,38 +28,71 @@ THE SOFTWARE.
#include "cocoa/CCObject.h" #include "cocoa/CCObject.h"
#include "cocoa/CCArray.h" #include "cocoa/CCArray.h"
NS_CC_BEGIN; NS_CC_BEGIN
class CC_DLL CCNotificationCenter : public CCObject class CC_DLL CCNotificationCenter : public CCObject
{ {
public: public:
/** CCNotificationCenter constructor */
CCNotificationCenter(); CCNotificationCenter();
/** CCNotificationCenter destructor */
~CCNotificationCenter(); ~CCNotificationCenter();
/** Gets the single instance of CCNotificationCenter. */
static CCNotificationCenter *sharedNotificationCenter(void); static CCNotificationCenter *sharedNotificationCenter(void);
/** Destroys the single instance of CCNotificationCenter. */
static void purgeNotificationCenter(void); static void purgeNotificationCenter(void);
/** @brief Adds an observer for the specified target.
* @param target The target which wants to observe notification events.
* @param selector The callback function which will be invoked when the specified notification event was posted.
* @param name The name of this notification.
* @param obj The extra parameter which will be passed to the callback function.
*/
void addObserver(CCObject *target, void addObserver(CCObject *target,
SEL_CallFuncO selector, SEL_CallFuncO selector,
const char *name, const char *name,
CCObject *obj); CCObject *obj);
/** @brief Removes the observer by the specified target and name.
* @param target The target of this notification.
* @param name The name of this notification.
*/
void removeObserver(CCObject *target,const char *name); void removeObserver(CCObject *target,const char *name);
/** @brief Registers one hander for script binding.
* @note Only supports Lua Binding now.
* @param handler The lua handler.
*/
void registerScriptObserver(int handler); void registerScriptObserver(int handler);
/** Unregisters script observer */
void unregisterScriptObserver(void); void unregisterScriptObserver(void);
/** @brief Posts one notification event by name.
* @param name The name of this notification.
*/
void postNotification(const char *name); void postNotification(const char *name);
/** @brief Posts one notification event by name.
* @param name The name of this notification.
* @param object The extra parameter.
*/
void postNotification(const char *name, CCObject *object); void postNotification(const char *name, CCObject *object);
/** @brief Gets script handler.
* @note Only supports Lua Binding now.
* @return The script handle.
*/
inline int getScriptHandler() { return m_scriptHandler; }; inline int getScriptHandler() { return m_scriptHandler; };
private: private:
//
// internal functions // internal functions
//
// Check whether the observer exists by the specified target and name.
bool observerExisted(CCObject *target,const char *name); bool observerExisted(CCObject *target,const char *name);
//
// variables // variables
// //
CCArray *m_observers; CCArray *m_observers;
@ -69,12 +102,21 @@ private:
class CC_DLL CCNotificationObserver : public CCObject class CC_DLL CCNotificationObserver : public CCObject
{ {
public: public:
/** @brief CCNotificationObserver constructor
* @param target The target which wants to observer notification events.
* @param selector The callback function which will be invoked when the specified notification event was posted.
* @param name The name of this notification.
* @param obj The extra parameter which will be passed to the callback function.
*/
CCNotificationObserver(CCObject *target, CCNotificationObserver(CCObject *target,
SEL_CallFuncO selector, SEL_CallFuncO selector,
const char *name, const char *name,
CCObject *obj); CCObject *obj);
/** CCNotificationObserver destructor function */
~CCNotificationObserver(); ~CCNotificationObserver();
/** Invokes the callback function of this observer */
void performSelector(CCObject *obj); void performSelector(CCObject *obj);
private: private:
CC_PROPERTY_READONLY(CCObject *, m_target, Target); CC_PROPERTY_READONLY(CCObject *, m_target, Target);
@ -83,6 +125,6 @@ private:
CC_PROPERTY_READONLY(CCObject *, m_object, Object); CC_PROPERTY_READONLY(CCObject *, m_object, Object);
}; };
NS_CC_END; NS_CC_END
#endif//__CCNOTIFICATIONCENTER_H__ #endif//__CCNOTIFICATIONCENTER_H__