我試圖使用Lua腳本和Cocos2d-x在一起,我有一點麻煩,使事情正常工作。從C++ CCScene打開CCScene在cocos2d-x
1部分: 我有兩個CCScene
類,HomeScene
和GameScene
。 HomeScene
寫在C++而GameScene
寫在Lua腳本。現在我想要做的是在這兩個場景之間創建一個「鏈接」。在HomeScene
的某個時間點,它將創建GameScene
和GameScene
將替換HomeScene
(類似CCDirector :: replaceScene)。之後,在GameScene
的生命週期中,它將返回到HomeScene
。
第2部分:從 除此之外,HomeScene
需要傳遞一些信息,讓我們說time
,爲GameScene
。 GameScene
將使用此值time
進行進一步處理。當GameScene
返回到HomeScene
時,它會傳遞另一位數據,比如說score
,返回HomeScene
。
所以,問題是,這兩個部分都可能使用cocos2d-x中的Lua綁定?如果是這樣,我應該如何去實施它?
我試過的: 我創建了一個小的Lua腳本文件來測試我在想什麼可以工作。
local function main()
local visibleSize = CCDirector:sharedDirector():getVisibleSize()
local origin = CCDirector:sharedDirector():getVisibleOrigin()
local function createLayer()
local function doGoBack()
CCDirector:sharedDirector():popScene()
end
local layer = CCLayer:create()
local btn = CCMenuItemImage:create("btn0.jpg", "btn1.jpg")
btn:setPosition(ccp(visibleSize.width * 0.50, visibleSize.height * 0.50))
btn:registerScriptTapHandler(doGoBack)
local menu = CCMenu:createWithItem(btn)
menu:setPosition(ccp(0, 0))
layer:addChild(menu, 1)
cclog("createdLayer")
return layer
end
-- run
local sceneGame = CCScene:create()
sceneGame:addChild(createLayer())
CCDirector:sharedDirector():pushScene(sceneGame)
end
然後創建了一個CCScene當我試圖運行它,得到正確執行的Lua腳本,將調用此腳本
void TestScene::runLuaScript() {
std::string luaPath = CCFileUtils::sharedFileUtils() -> fullPathForFilename("test.lua");
CCString * luaCode = CCString::createWithContentsOfFile(luaPath.c_str());
CCLuaEngine::defaultEngine() -> executeString(luaCode -> getCString());
}
(該cclog
輸出被正確打印的),但是,從對象Lua場景不可見,只出現黑屏(因爲TestScene
是空場景)。
我感覺我在想什麼是可能的,只是我錯誤地實現了它。任何幫助將不勝感激。非常感謝你。