local XXOOScene = {}
XXOOScene.newScene = function ()
local scene = cc.Scene:create()
-- do other XXOO things
return scene
end
return XXOOScene
关于Scene界面跳转,在util中封装一个通用函数用于界面跳转。
function util.toScene(scene)
-- 增加一个统一的界面跳转动画
scene = cc.TransitionSlideInR:create(0.5, scene)
if cc.Director:getInstance():getRunningScene() then
cc.Director:getInstance():replaceScene(scene)
else
cc.Director:getInstance():runWithScene(scene)
end
end
main.lua用户进入HelloScene界面
HelloScene = require("src/HelloScene")
local function main()
cc.FileUtils:getInstance():addSearchResolutionsOrder("src")
cc.FileUtils:getInstance():addSearchResolutionsOrder("res")
HelloScene.newScene()
end
local status, msg = xpcall(main, __G__TRACKBACK__)
if not status then
error(msg)
end
解决方案:在 C++ 中创建启动画面,HelloScene.lua中不做创建Scene的操作,直接getRunningScene。
AppDelegate::applicationDidFinishLaunching () {
// ... other xxoo things
auto scene = Scene::create();
auto s = Director::getInstance()->getWinSize();
auto layer = LayerColor::create(Color4B(255, 255, 255, 255), s.width, s.height);
auto logo = Sprite::create("res/logo.png");
layer->addChild(logo);
logo->setPosition(Vec2(s.width*0.5,s.height*0.7));
scene->addChild(layer,0);
director->runWithScene(scene);
// 特殊处理,延迟加载lua(创建好logoScene再加载)
auto action = CallFunc::create(startLua);
layer->runAction(action);
return true;
}
小游戏的组成
欢迎界面
开始菜单界面
主游戏界面
游戏结束界面
排行榜界面 (可选)
cocos2d-x v3.1 lua 框架的使用
lua代码结构
每个XXOOScene.lua 文件的样子如下:
关于Scene界面跳转,在util中封装一个通用函数用于界面跳转。
main.lua用户进入HelloScene界面
游戏启动logo的Scene特殊处理
cocos2d-x v3.1 引擎的精简
cocos/scripting/lua-bindings/auto/ 下的文件生成