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 |