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 |