cocos2d-x节点(CCScriptSupport.h)API
2013-11-30 14:17
204 查看
本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
调度器脚本处理程序入口、触摸脚本处理程序入口、脚本处理程序入口
cocos2d-x节点(CCScriptSupport.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记调度器脚本处理程序入口、触摸脚本处理程序入口、脚本处理程序入口
///cocos2d-x-3.0alpha0/cocos2dx/script_support //调度器脚本处理程序入口、触摸脚本处理程序入口、脚本处理程序入口 #ifndef __SCRIPT_SUPPORT_H__ #define __SCRIPT_SUPPORT_H__ #include "platform/CCCommon.h" #include "event_dispatcher/CCTouch.h" #include "event_dispatcher/CCEventTouch.h" #include "event_dispatcher/CCEventKeyboard.h" #include "cocoa/CCSet.h" #include <map> #include <string> #include <list> typedef struct lua_State lua_State; NS_CC_BEGIN class Timer; class Layer; class MenuItem; class NotificationCenter; class CallFunc; class Acceleration; enum ccScriptType { kScriptTypeNone = 0, kScriptTypeLua, kScriptTypeJavascript }; class ScriptHandlerEntry : public Object { public: static ScriptHandlerEntry* create(int nHandler); /** * @js NA * @lua NA */ ~ScriptHandlerEntry(void); int getHandler(void) { return _handler; } int getEntryId(void) { return _entryId; } protected: ScriptHandlerEntry(int nHandler) : _handler(nHandler) { static int newEntryId = 0; newEntryId++; _entryId = newEntryId; } int _handler; int _entryId; }; /** * @addtogroup script_support * @{ */ class SchedulerScriptHandlerEntry : public ScriptHandlerEntry { public: // nHandler return by tolua_ref_function(), called from LuaCocos2d.cpp /** * @js NA * @lua NA */ static SchedulerScriptHandlerEntry* create(int nHandler, float fInterval, bool bPaused); /** * @js NA * @lua NA */ ~SchedulerScriptHandlerEntry(void); /** * @js NA * @lua NA */ cocos2d::Timer* getTimer(void) { return _timer; } /** * @js NA * @lua NA */ bool isPaused(void) { return _paused; } /** * @js NA * @lua NA */ void markedForDeletion(void) { _markedForDeletion = true; } /** * @js NA * @lua NA */ bool isMarkedForDeletion(void) { return _markedForDeletion; } private: SchedulerScriptHandlerEntry(int nHandler) : ScriptHandlerEntry(nHandler) , _timer(NULL) , _paused(false) , _markedForDeletion(false) { } bool init(float fInterval, bool bPaused); cocos2d::Timer* _timer; bool _paused; bool _markedForDeletion; }; class TouchScriptHandlerEntry : public ScriptHandlerEntry { public: /** * @js NA * @lua NA */ static TouchScriptHandlerEntry* create(int nHandler, bool bIsMultiTouches, int nPriority, bool bSwallowsTouches); /** * @js NA * @lua NA */ ~TouchScriptHandlerEntry(void); /** * @js NA * @lua NA */ bool isMultiTouches(void) { return _isMultiTouches; } /** * @js NA * @lua NA */ int getPriority(void) { return _priority; } /** * @js NA * @lua NA */ bool getSwallowsTouches(void) { return _swallowsTouches; } private: TouchScriptHandlerEntry(int nHandler) : ScriptHandlerEntry(nHandler) , _isMultiTouches(false) , _priority(0) , _swallowsTouches(false) { } bool init(bool bIsMultiTouches, int nPriority, bool bSwallowsTouches); bool _isMultiTouches; int _priority; bool _swallowsTouches; }; enum ScriptEventType { kNodeEvent = 0, kMenuClickedEvent, kNotificationEvent, kCallFuncEvent, kScheduleEvent, kTouchEvent, kTouchesEvent, kKeypadEvent, kAccelerometerEvent, kControlEvent, kCommonEvent, kTableViewEvent,//Now it's only used in LuaBinding }; struct BasicScriptData { // nativeobject:to get handler for lua or to get jsobject for js void* nativeObject; // value: a pointer to a object that already defined void* value; // Constructor /** * @js NA * @lua NA */ BasicScriptData(void* inObject,void* inValue = NULL) : nativeObject(inObject),value(inValue) { } }; struct SchedulerScriptData { // lua use int handler; float elapse; // js use void* node; // Constructor /** * @js NA * @lua NA */ SchedulerScriptData(int inHandler,float inElapse,void* inNode = NULL) : handler(inHandler), elapse(inElapse), node(inNode) { } }; struct TouchesScriptData { EventTouch::EventCode actionType; void* nativeObject; const std::vector<Touch*>& touches; // Constructor /** * @js NA * @lua NA */ TouchesScriptData(EventTouch::EventCode inActionType, void* inNativeObject, const std::vector<Touch*>& inTouches) : actionType(inActionType), nativeObject(inNativeObject), touches(inTouches) { } }; struct TouchScriptData { EventTouch::EventCode actionType; void* nativeObject; Touch* touch; // Constructor /** * @js NA * @lua NA */ TouchScriptData(EventTouch::EventCode inActionType, void* inNativeObject, Touch* inTouch) : actionType(inActionType), nativeObject(inNativeObject), touch(inTouch) { } }; struct KeypadScriptData { EventKeyboard::KeyCode actionType; void* nativeObject; // Constructor /** * @js NA * @lua NA */ KeypadScriptData(EventKeyboard::KeyCode inActionType,void* inNativeObject) : actionType(inActionType),nativeObject(inNativeObject) { } }; struct CommonScriptData { // Now this struct is only used in LuaBinding. int handler; char eventName[64]; Object* eventSource; char eventSourceClassName[64]; // Constructor /** * @js NA * @lua NA */ CommonScriptData(int inHandler,const char* inName,Object* inSource = NULL,const char* inClassName = NULL) : handler(inHandler), eventSource(inSource) { strncpy(eventName, inName, 64); if (NULL == inClassName) { memset(eventSourceClassName, 0, 64*sizeof(char)); } else { strncpy(eventSourceClassName, inClassName, 64); } } }; struct ScriptEvent { ScriptEventType type; void* data; // Constructor /** * @js NA * @lua NA */ ScriptEvent(ScriptEventType inType,void* inData) : type(inType), data(inData) { } }; // 不要让ScriptEngineProtocol从Object对象继承,因为setScriptEngine只能由 AppDelegate.cpp 调用一次 // 它会影响 ScriptCore实例的生命周期,autorelease池将在 ScriptCore 毁灭之前销毁 //所以,如果你点击关闭按钮,将出现在Win32崩溃。 class CC_DLL ScriptEngineProtocol { public: /** * @js NA * @lua NA */ virtual ~ScriptEngineProtocol() {}; /** Get script type * @js NA * @lua NA */ virtual ccScriptType getScriptType() { return kScriptTypeNone; }; /** Remove script object. * @js NA * @lua NA */ virtual void removeScriptObjectByObject(Object* pObj) = 0; /** Remove 脚本函数句柄,只有LuaEngine类需要实现这个功能. * @js NA * @lua NA */ virtual void removeScriptHandler(int nHandler) {}; /** 重新配置脚本函数句柄,只有LuaEngine类需要实现这个功能. * @js NA * @lua NA */ virtual int reallocateScriptHandler(int nHandler) { return 0;} /** @brief 执行给定的字符串包含的脚本代码. @param codes 持有应该执行的有效的脚本代码 @return 0 如果该字符串被正确执行. @return other if the string is executed wrongly. * @js NA * @lua NA */ virtual int executeString(const char* codes) = 0; /** @brief Execute a script file. @param filename 要执行的脚本文件的文件名 * @js NA * @lua NA */ virtual int executeScriptFile(const char* filename) = 0; /** @brief 执行全局函数脚本。 @brief 该函数不应该采取任何参数,应该返回一个整数. @param functionName 全局脚本环境中,也就是被执行的函数名, @return The integer value returned from the script function. * @js NA * @lua NA */ virtual int executeGlobalFunction(const char* functionName) = 0; /**when 触发脚本事件,调用此功能,添加parent到一个需要的 ScriptEvent object.nativeObject 是触发事件的对象, can be NULL in lua * @js NA * @lua NA */ virtual int sendEvent(ScriptEvent* evt) = 0; /** 由 CCAssert 调用,允许脚本引擎来处理失败的 assertions(断言) * @return true 如果 assertions(断言)是由脚本引擎处理, false otherwise. * @js NA * @lua NA */ virtual bool handleAssert(const char *msg) = 0; }; /** ScriptEngineManagerr是一个单例它持有一个criptEngineProtocl 对象实例 S 它可以帮助的cocos2d-x和用户找回 LuaEngine 对象 @since v0.99.5-x-0.8.5 */ class CC_DLL ScriptEngineManager { public: /** * @js NA * @lua NA */ ~ScriptEngineManager(void); /** * @js NA * @lua NA */ ScriptEngineProtocol* getScriptEngine(void) { return _scriptEngine; } /** * @js NA * @lua NA */ void setScriptEngine(ScriptEngineProtocol *pScriptEngine); /** * @js NA * @lua NA */ void removeScriptEngine(void); /** * @js NA * @lua NA */ static ScriptEngineManager* getInstance(); /** * @js NA * @lua NA */ static void destroyInstance(); /** * @js NA * @lua NA */ CC_DEPRECATED_ATTRIBUTE static ScriptEngineManager* sharedManager() { return ScriptEngineManager::getInstance(); }; /** * @js NA * @lua NA */ CC_DEPRECATED_ATTRIBUTE static void purgeSharedManager() { ScriptEngineManager::destroyInstance(); }; private: ScriptEngineManager(void) : _scriptEngine(NULL) { } ScriptEngineProtocol *_scriptEngine; }; // end of script_support group /// @} NS_CC_END #endif // __SCRIPT_SUPPORT_H__
相关文章推荐
- cocos2d-X 节点(CCArmature.h)API
- cocos2d-X 节点(UIHelper.h)API
- cocos2d-X 节点(UIImageView.h)API
- cocos2d-x节点(b2MouseJoint.h)API
- cocos2d-x节点(b2StackAllocator.h)API
- cocos2d-x节点(CCProfiling.h)API
- cocos2d-x节点(CCDevice.h)API
- cocos2d-x节点(CCTransitionProgress.h)API
- cocos2d-x节点(CCDrawingPrimitives.h)API
- cocos2d-X 节点(CCLabelTTF.h)API
- cocos2d-X 节点(CCTMXLayer.h)API
- cocos2d-X 节点(CCBone.h)API
- cocos2d-X 节点(UIInputManager.h)API
- cocos2d-X 节点(UILabel.h)API
- cocos2d-x节点(b2GearJoint.h)API
- cocos2d-x节点(b2Distance.h)API
- cocos2d-x节点(ccUTF8.h)API
- cocos2d-x节点(CCEGLViewProtocol.h)API
- cocos2d-x节点(CCTransitionPageTurn.h)API
- cocos2d-x节点(CCString.h)API