2013-09-11 09:48:24 +08:00
|
|
|
local targetPlatform = cc.Application:getInstance():getTargetPlatform()
|
|
|
|
|
|
|
|
local LINE_SPACE = 40
|
|
|
|
local itemTagBasic = 1000
|
|
|
|
local LuaBridgeTestsName =
|
|
|
|
{
|
|
|
|
"LuaJavaBridge",
|
|
|
|
"LuaObjectCBridge",
|
|
|
|
}
|
|
|
|
|
|
|
|
local s = cc.Director:getInstance():getWinSize()
|
|
|
|
|
|
|
|
local function LuaBridgeLayer()
|
|
|
|
local layer = cc.Layer:create()
|
|
|
|
local menu = cc.Menu:create()
|
|
|
|
menu:setPosition(cc.p(0, 0))
|
|
|
|
cc.MenuItemFont:setFontName("Arial")
|
|
|
|
cc.MenuItemFont:setFontSize(24)
|
|
|
|
|
|
|
|
local supportObjectCBridge = false
|
|
|
|
if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform) or (cc.PLATFORM_OS_MAC == targetPlatform) then
|
|
|
|
supportObjectCBridge = true
|
|
|
|
end
|
|
|
|
|
|
|
|
local supportJavaBridge = false
|
|
|
|
if (cc.PLATFORM_OS_ANDROID == targetPlatform) then
|
|
|
|
supportJavaBridge = true
|
|
|
|
end
|
|
|
|
|
|
|
|
local function createMenuToBridgeScene()
|
|
|
|
local menuToBridgeScene = cc.Menu:create()
|
|
|
|
local function toBridgeScene()
|
|
|
|
local scene = LuaBridgeMainTest()
|
|
|
|
if scene ~= nil then
|
|
|
|
cc.Director:getInstance():replaceScene(scene)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--Create BackMneu
|
|
|
|
cc.MenuItemFont:setFontName("Arial")
|
|
|
|
cc.MenuItemFont:setFontSize(24)
|
|
|
|
local menuItemFont = cc.MenuItemFont:create("Back")
|
|
|
|
menuItemFont:setPosition(cc.p(VisibleRect:rightBottom().x - 50, VisibleRect:rightBottom().y + 25))
|
|
|
|
menuItemFont:registerScriptTapHandler(toBridgeScene)
|
|
|
|
menuToBridgeScene:addChild(menuItemFont)
|
|
|
|
menuToBridgeScene:setPosition(cc.p(0, 0))
|
|
|
|
return menuToBridgeScene
|
|
|
|
end
|
|
|
|
|
|
|
|
local function newLuaJavaBridge()
|
|
|
|
local newScene = cc.Scene:create()
|
|
|
|
local titleLabel = cc.LabelTTF:create("", "Arial", 28)
|
|
|
|
newScene:addChild(titleLabel, 1)
|
|
|
|
titleLabel:setPosition(s.width / 2, s.height - 50)
|
|
|
|
titleLabel:setString("LuaJavaBridge Test")
|
|
|
|
|
|
|
|
subtitleLabel = cc.LabelTTF:create("", "Thonburi", 16)
|
|
|
|
newScene:addChild(subtitleLabel, 1)
|
|
|
|
subtitleLabel:setPosition(s.width / 2, s.height - 80)
|
|
|
|
subtitleLabel:setString("See the console.")
|
|
|
|
if (cc.PLATFORM_OS_ANDROID == targetPlatform) then
|
|
|
|
local args = { 2 , 3}
|
|
|
|
local sigs = "(II)I"
|
|
|
|
local luaj = require "luaj"
|
|
|
|
local className = "com/cocos2dx/sample/LuaJavaBridgeTest/LuaJavaBridgeTest"
|
|
|
|
local ok,ret = luaj.callStaticMethod(className,"addTwoNumbers",args,sigs)
|
|
|
|
if not ok then
|
|
|
|
print("luaj error:", ret)
|
|
|
|
else
|
2013-10-31 15:20:53 +08:00
|
|
|
print("The ret is:", ret)
|
2013-09-11 09:48:24 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
local function callbackLua(param)
|
|
|
|
if "success" == param then
|
|
|
|
print("java call back success")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
args = { "callbacklua", callbackLua }
|
|
|
|
sigs = "(Ljava/lang/String;I)V"
|
|
|
|
ok = luaj.callStaticMethod(className,"callbackLua",args,sigs)
|
|
|
|
if not ok then
|
|
|
|
print("call callback error")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return newScene
|
|
|
|
end
|
|
|
|
|
|
|
|
local function newLuaObjectCBridge()
|
|
|
|
local newScene = cc.Scene:create()
|
2013-10-31 15:20:53 +08:00
|
|
|
local titleLabel = cc.LabelTTF:create("", "Arial", 28)
|
|
|
|
newScene:addChild(titleLabel, 1)
|
|
|
|
titleLabel:setPosition(s.width / 2, s.height - 50)
|
|
|
|
titleLabel:setString("LuaObjectCBridge Test")
|
|
|
|
|
|
|
|
subtitleLabel = cc.LabelTTF:create("", "Thonburi", 16)
|
|
|
|
newScene:addChild(subtitleLabel, 1)
|
|
|
|
subtitleLabel:setPosition(s.width / 2, s.height - 80)
|
|
|
|
subtitleLabel:setString("See the console.")
|
|
|
|
if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform) or (cc.PLATFORM_OS_MAC == targetPlatform) then
|
|
|
|
local args = { num1 = 2 , num2 = 3 }
|
|
|
|
local luaoc = require "luaoc"
|
|
|
|
local className = "LuaObjectCBridgeTest"
|
|
|
|
local ok,ret = luaoc.callStaticMethod(className,"addTwoNumbers",args)
|
|
|
|
if not ok then
|
|
|
|
Director:getInstance():resume()
|
|
|
|
else
|
|
|
|
print("The ret is:", ret)
|
|
|
|
end
|
|
|
|
|
|
|
|
local function callback(param)
|
|
|
|
if "success" == param then
|
|
|
|
print("object c call back success")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
luaoc.callStaticMethod(className,"registerScriptHandler", {scriptHandler = callback } )
|
|
|
|
luaoc.callStaticMethod(className,"callbackScriptHandler")
|
|
|
|
end
|
2013-09-11 09:48:24 +08:00
|
|
|
return newScene
|
|
|
|
end
|
|
|
|
|
|
|
|
local function newLuaBridgeScene(idx)
|
|
|
|
if 1 == idx then
|
|
|
|
return newLuaJavaBridge()
|
|
|
|
elseif 2 == idx then
|
|
|
|
return newLuaObjectCBridge()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
local function menuCallback(tag, pMenuItem)
|
|
|
|
local scene = nil
|
|
|
|
local nIdx = pMenuItem:getZOrder() - itemTagBasic
|
|
|
|
local newScene = newLuaBridgeScene(nIdx)
|
|
|
|
if nil ~= newScene then
|
|
|
|
newScene:addChild(createMenuToBridgeScene(),10)
|
|
|
|
cc.Director:getInstance():replaceScene(newScene)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
for i = 1, table.getn(LuaBridgeTestsName) do
|
|
|
|
local item = cc.MenuItemFont:create(LuaBridgeTestsName[i])
|
|
|
|
item:registerScriptTapHandler(menuCallback)
|
|
|
|
item:setPosition(s.width / 2, s.height - i * LINE_SPACE)
|
|
|
|
menu:addChild(item, itemTagBasic + i)
|
|
|
|
if ((i == 1) and (false == supportJavaBridge))
|
|
|
|
or ((i == 2) and (false == supportObjectCBridge)) then
|
|
|
|
item:setEnabled(false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
layer:addChild(menu)
|
|
|
|
|
|
|
|
return layer
|
|
|
|
end
|
|
|
|
|
|
|
|
-------------------------------------
|
|
|
|
-- LuaBridge Test
|
|
|
|
-------------------------------------
|
|
|
|
function LuaBridgeMainTest()
|
|
|
|
local scene = cc.Scene:create()
|
|
|
|
scene:addChild(LuaBridgeLayer())
|
|
|
|
scene:addChild(CreateBackMenuItem())
|
|
|
|
return scene
|
2013-09-16 10:04:58 +08:00
|
|
|
end
|