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;
NS_CC_BEGIN;
NS_CC_BEGIN
static CCNotificationCenter *s_sharedNotifCenter = NULL;
@ -214,4 +214,4 @@ CCObject *CCNotificationObserver::getObject()
return m_object;
}
NS_CC_END;
NS_CC_END

View File

@ -28,38 +28,71 @@ THE SOFTWARE.
#include "cocoa/CCObject.h"
#include "cocoa/CCArray.h"
NS_CC_BEGIN;
NS_CC_BEGIN
class CC_DLL CCNotificationCenter : public CCObject
{
public:
/** CCNotificationCenter constructor */
CCNotificationCenter();
/** CCNotificationCenter destructor */
~CCNotificationCenter();
/** Gets the single instance of CCNotificationCenter. */
static CCNotificationCenter *sharedNotificationCenter(void);
/** Destroys the single instance of CCNotificationCenter. */
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,
SEL_CallFuncO selector,
const char *name,
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);
/** @brief Registers one hander for script binding.
* @note Only supports Lua Binding now.
* @param handler The lua handler.
*/
void registerScriptObserver(int handler);
/** Unregisters script observer */
void unregisterScriptObserver(void);
/** @brief Posts one notification event by name.
* @param name The name of this notification.
*/
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);
/** @brief Gets script handler.
* @note Only supports Lua Binding now.
* @return The script handle.
*/
inline int getScriptHandler() { return m_scriptHandler; };
private:
//
// internal functions
//
// Check whether the observer exists by the specified target and name.
bool observerExisted(CCObject *target,const char *name);
//
// variables
//
CCArray *m_observers;
@ -69,12 +102,21 @@ private:
class CC_DLL CCNotificationObserver : public CCObject
{
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,
SEL_CallFuncO selector,
const char *name,
CCObject *obj);
/** CCNotificationObserver destructor function */
~CCNotificationObserver();
/** Invokes the callback function of this observer */
void performSelector(CCObject *obj);
private:
CC_PROPERTY_READONLY(CCObject *, m_target, Target);
@ -83,6 +125,6 @@ private:
CC_PROPERTY_READONLY(CCObject *, m_object, Object);
};
NS_CC_END;
NS_CC_END
#endif//__CCNOTIFICATIONCENTER_H__