quickcocos2dx framework

framework

cc

ui

init.lua

makeUIControl_

所有的ui下的組件都使用了這個方法,它爲ui組件提供了components.ui.LayoutProtocol和components.behavior.EventProtocol導出。

另外,它註冊了cc.Event.EXIT_SCENE事件,保證在退出SCENE的時候清除所有的事件引用。

components

Component.lua

所有組件的基類。提供了綁定bind_和導出方法exportMethods_的基本功能。

behavior.EventProtocol.lua

與 api.EventProtocol.lua 的作用大致相同。只是它繼承了Components鏈。根據廖大的說法,這個類會替換api.EventProtocol.lua

behavior.StateMachine.lua

一個狀態機的實現,一些組件使用了這個狀態機。例如UIButton、UISlider。mvc sample中也使用了這個狀態機。

ui.BasicLayoutProtocol.lua

佈局的基本實現

ui.LayoutProtocol.lua

mvc

AppBase.lua

實現MVC中的唯一App,使用CCNotificationCenter註冊了AppBase.APP_ENTER_BACKGROUND_EVENT和AppBase.APP_ENTER_FOREGROUND_EVENT兩個事件,不知在真機上是否有用。

ModelBase.lua

實現MVC中的M。繼承了EventProtocol的功能,可以發佈事件。但是提供的初始化屬性的方法我覺得沒有什麼作用,用起來很蹩腳。

Event.lua

Event.ENTER_SCENE                 = ENTER_SCENE_EVENT
Event.EXIT_SCENE                  = EXIT_SCENE_EVENT
Event.ENTER_TRANSITION_DID_FINISH = ENTER_TRANSITION_DID_FINISH_EVENT
Event.EXIT_TRANSITION_DID_START   = EXIT_TRANSITION_DID_START_EVENT
Event.CLEANUP                     = CLEANUP_EVENT
Event.ENTER_FRAME                 = ENTER_FRAME_EVEN

可以使用addScriptEventListener來註冊這些事件,他們在 [quick]\lib\luabinding\cocos2dx\cocoa\CCEventDispatcher.tolua 中導出。

這裏的幾個事件是quick專有的,來源於下方 CCEventDispatcher.h

removeScriptEventListener並沒有正確導出,第二個參數沒有設置成LUA_FUNCTION。因此不太容易關閉這個註冊。

這個實現是在傳遞事件是ENTER_FRAME的時候,開一個計時器。這種方式並不靈活,而且在多次調用的時候會出現定時器重複調用。

不建議使用這種方式來獲取全局計時器事件。而應該在lua中自己啓動一個計時器。

GameObject.lua

遊戲中所有的組件(所有類)都應該實現它。它實現了組件的繼承鏈。

Registry.lua

實現繼承鏈的輔助類。它是一個組件庫,保存所有註冊的組件,爲繼承鏈中的組件實例化提供幫助。

EventProxy.lua

通過代理註冊事件的好處:可以方便的在視圖刪除時,清理所以通過該代理註冊的事件,同時不影響目標對象上註冊的其他事件

EventProxy.new() 第一個參數是要註冊事件的對象,第二個參數是綁定的視圖。如果指定了第二個參數,那麼在視圖刪除時,會自動清理註冊的事

shortcodes.lua

這裏保存一些爲了提升開發效率而封裝的快速代碼。例如 addTo 將自己增加到父容器中,pos 設定座標, onTouch 綁定一個觸摸事件。支持鏈式操作。

cocos2d-x中沒有的類

[quick]\lib\cocos2d-x\cocos2dx\draw_nodes\CCShapeNode.cpp

提供一些畫圖的快速方法。

[quick]\lib\cocos2d-x\cocos2dx\misc_nodes\CCClippingRegionNode.cpp

根據一個CCRect設定一個顯示區域,與CCClippingNode的功能有些類似,但功能和使用更簡單。

[quick]/lib/cocos2d-x/cocos2dx/cocoa/CCEventDispatcher.h

提供事件。詳見上方的 Event.lua

tolua

CCNode

導出:[quick]\lib\luabinding\cocos2dx\base_nodes\CCNode.tolua

別名 原名 備註
addTouchEventListener registerScriptTouchHandler  
removeTouchEventListener unregisterScriptTouchHandler  
scheduleUpdate scheduleUpdateWithPriorityLua 與 C++中 scheduleUpdate 的作用一致
getPositionInCCPoint getPosition lua中調用getPosition,是兩個返回值。比如使用別名才能返回CCPoint
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章