LuaProxy for cocos2d-x, include CocosBuilder support for lua, and other cocos2d-extension support for lua, and easy to use function.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LuaProxy
example
README-02-complexFunc.md
README.md

README.md

#cocos2dx-LuaProxy#

Current version: 2.1.5, support cocos2d-x 2.1.5 and 2.2.x
LuaProxy for cocos2d-x, include CocosBuilder support for lua, and other cocos2d-extension support for lua, and easy to use function.
当前版本:2.1.5,支持cocos2d-x 2.1.5及2.2.x
LuaProxy基于cocos2d-x,主要用于支持在Lua中使用CocosBuilder输出的界面、动画文件,以及添加cocos2d扩展库的Lua支持,还有另外一些易用功能。

LuaProxy have been merged in quick-cocos2d-x. LuaProxy已被整合进quick-cocos2d-x。

##For cocos2d-x 3.0 alpha# Changes of 3.0 is huge, I think I'll use more time to port.
And, I hope to support JavaScript Binding, so LuaProxy is going to rename to "ScriptProxy". But lua is main target to support.
Most files had changed name, because this is a new start, for LuaProxy, and your game project.
3.0的改变很巨大,我大概还要一段时间来移植。我希望可以支持JSB,所以LuaProxy要改名为ScriptProxy,但Lua仍然是主要的支持目标。
很多文件会改名,对LuaProxy来说这是一个新的开始,对你的游戏项目如是。

##LuaProxy 2.1.4 for cocos2d-x 2.1.4# Don't add tolua_extensions_ccb_open(lua_State) to AppDelegate.cpp.
For iOS: And remove CCBProxy., Lua_extensions_CCB. at lib/cocos2d/lua/cocos2dx_support (4 files).
请勿添加tolua_extensions_ccb_open(lua_State)的调用。
iOS中要从Xcode工程中移除CCBProxy., Lua_extensions_CCB.(共4个文件)。

##Change Log# 2013-8-27 LuaProxy 2.1.5 up. Rename class CCBProxy -> LuaProxy, supported cocos2d-x 3.0, change directory struct.
2013-6-19 Moved some functions about ui to ui/UIUtil from CCBProxy. Moved UIEventDispatcher into UIUtil.h/.cpp no longer stand alone. Add CameraEyeAction to do some 3d effect.
2013-6-14 Add CCGLProgram support for lua.
2013-6-9 Support cocos2d-x 2.1.3.
2013-5-29 Add two LuaTableView events, and ui/UIUtil for useful functions.
2013-5-16 Add static functions to LuaEventHandler to direct call lua function.
2013-4-8 Add scroll bar support for LuaTableView. Temporary remove support for CCEditBox.
2013-3-28 Fix for support cocos2d-x 2.1.1.
2013-3-22 Bug fix: LuaTableView is "null" userdata in lua. Add LuaCallFuncInterval for call lua function every frame in duration seconds.
2013-3-19 Change main include file name to luaopen_LuaProxy.h - All function useful for lua will be add, not only CC_Extension.

##Step 1 Add LuaProxy files to your project# Create a Lua based cocos2d-x project, or open your project that added Lua support.
Copy LuaProxy directory into Classes, add all file into project (ui/* is optional).

##Step 2 Add C++ Code# Open CCAppDelegate.cpp, add include like this:

#include "tolua/luaopen_LuaProxy.h"

Move to the line that got CCLuaEngine, add this:

luaopen_LuaProxy(pEngine->getLuaState());

Now you can do those things in lua, but we must create a CCBProxy at first, I wrote this in lua:

local proxy = LuaProxy:create()
-- !!
-- If you want to handle CCControlButton, you must retain the proxy,
-- And kept variable "proxy" to global or global table.
-- While the button won't be use, just like scene poped, you'd batter release the proxy.
-- proxy:retain()

##About CCBI#

###Load ccbi made by CocosBuilder# Maybe you have a ccbi file named "ui-start.ccbi", root node typed with "CCLayer", place it in "Resources/ccb", call this in lua:

local n = proxy:readCCBFromFile("ccb/ui-start.ccbi") -- Got a CCNode
local l = tolua.cast(n, "CCLayer") -- Cast the node into CCLayer

Now you can add the "l" into any scene.

###Referrence any node in ccbi# We'd loaded a ccbi as layer, but you want access a CCLabelTTF, marked "owner" and named "label" in CocosBuilder, and a CCControlButton named "button". Just do this:

local lbl = tolua.cast(proxy:getNode"label", "CCLabelTTF")
lbl:setString("some string")
local btn = tolua.cast(proxy:getNode"button", "CCControlButton")

When CCBProxy read ccbi, it has saved all member variable into a CCDictionary.
So if you'd loaded other ccbi and any variable defined same name, the old one will be lost in the CCDictionary.

###Proxy CCControlButton event with any function# There are two way to do the thing.

-- Handle single button event, you must kept the proxy (retain it, release after the button never use.)
proxy:handleButtonEvent(btn, function(s, e) print(s, e) end, 0) -- 0 means UpInside

[Continue Read] (README-02-complexFunc.md)