android - Corona SDK gotoScene 错误

标签 android sdk lua coronasdk

所以我在 Corona SDK 中制作一个应用程序,当我单击试图加载我的第一个级别的按钮时出现错误。

这是我的代码:

主.lua

local storyboard = require "storyboard"
storyboard.gotoScene("menu")

菜单.lua

local storyboard = require ("storyboard")
local scene = storyboard.newScene()

function scene:createScene( event )

    local screenGroup = self.view

    -- Background
    bg = display.newImage("images/bg.png")
    bg.x = display.contentCenterX
    bg.y = display.contentCenterY
    screenGroup:insert(bg)

    -- Title
    title = display.newImage("images/title.png")
    title.x = display.contentCenterX
    title.y = display.contentCenterY - 100
    screenGroup:insert(title)

    -- Play game
    play = display.newImage("images/playgame.png")
    play.x = display.contentCenterX - 170
    play.y = display.contentCenterY - 27
    screenGroup:insert(play)

    -- About Us
    about = display.newImage("images/about.png")
    about.x = display.contentCenterX - 100
    about.y = display.contentCenterY + 40
    screenGroup:insert(about)

    -- Level Select
    select = display.newImage("images/select.png")
    select.x = display.contentCenterX
    select.y = display.contentCenterY + 100
    screenGroup:insert(select)

end

function start(event)
    if event.phase == "began" then
        storyboard.gotoScene("level1", "fade", 400)
    end
end

function start2(event)
    if event.phase == "began" then
        storyboard.gotoScene("about", "fade", 400)
    end
end

function start3(event)
    if event.phase == "began" then
        storyboard.gotoScene("selectlvl", "fade", 400)
    end
end

function scene:enterScene(event)

    play:addEventListener("touch", start)
    about:addEventListener("touch", start2)
    select:addEventListener("touch", start3)

end

scene:addEventListener( "createScene", scene )
scene:addEventListener( "enterScene", scene )

return scene

我的 level1.lua 中有 0 个代码

我得到的错误是这样的:

Runtime error
    ?:0: attempt to concatenate global 'sceneName' (a nil value)
stack traceback:
    [C]: ?
    ?: in function 'gotoScene'
    ...s\corona projects\stickman obsticale course\menu.lua.42: in function
<...s\corona projects\stickman obsticale course\menu.

感谢阅读,我希望你能找到答案,因为我找不到:)

最佳答案

问题是您的 level1.lua 中确实有 0 个代码。我将向您发送每个人在第一次开始使用 Storyboard时都会使用的模板代码。

您的代码的问题在于,当您进入第 1 层时,没有创建场景的代码。此外,也没有关于场景何时进入、退出或被破坏的代码。这样,你在menu.lua上的代码就无处可去了。将下面的代码复制粘贴到级别 1 中。当我使用场景模板运行您的代码时,它对我有用。

另一方面,我注意到您的函数和显示对象是在 createScene 中创建的。我会将它们放在 enterScene 中,因为只有在页面加载后才应调用它们。

希望对您有所帮助!如果您的代码不起作用或有其他问题,请与我联系。

----------------------------------------------------------------------------------

local storyboard = require( "storyboard" )
local scene = storyboard.newScene()

----------------------------------------------------------------------------------
-- 
--  NOTE:
--  
--  Code outside of listener functions (below) will only be executed once,
--  unless storyboard.removeScene() is called.
-- 
---------------------------------------------------------------------------------

---------------------------------------------------------------------------------
-- BEGINNING OF YOUR IMPLEMENTATION
---------------------------------------------------------------------------------

-- Called when the scene's view does not exist:
function scene:createScene( event )
    local group = self.view

    -----------------------------------------------------------------------------

    --  CREATE display objects and add them to 'group' here.
    --  Example use-case: Restore 'group' from previously saved state.

    -----------------------------------------------------------------------------

end


-- Called immediately after scene has moved onscreen:
function scene:enterScene( event )
    local group = self.view

    print("entered")

    -----------------------------------------------------------------------------

    --  INSERT code here (e.g. start timers, load audio, start listeners, etc.)

    -----------------------------------------------------------------------------

end


-- Called when scene is about to move offscreen:
function scene:exitScene( event )
    local group = self.view

    -----------------------------------------------------------------------------

    --  INSERT code here (e.g. stop timers, remove listeners, unload sounds, etc.)

    -----------------------------------------------------------------------------

end


-- Called prior to the removal of scene's "view" (display group)
function scene:destroyScene( event )
    local group = self.view

    -----------------------------------------------------------------------------

    --  INSERT code here (e.g. remove listeners, widgets, save state, etc.)

    -----------------------------------------------------------------------------

end

---------------------------------------------------------------------------------
-- END OF YOUR IMPLEMENTATION
---------------------------------------------------------------------------------

-- "createScene" event is dispatched if scene's view does not exist
scene:addEventListener( "createScene", scene )

-- "enterScene" event is dispatched whenever scene transition has finished
scene:addEventListener( "enterScene", scene )

-- "exitScene" event is dispatched before next scene's transition begins
scene:addEventListener( "exitScene", scene )

-- "destroyScene" event is dispatched before view is unloaded, which can be
-- automatically unloaded in low memory situations, or explicitly via a call to
-- storyboard.purgeScene() or storyboard.removeScene().
scene:addEventListener( "destroyScene", scene )

---------------------------------------------------------------------------------

return scene

关于android - Corona SDK gotoScene 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16503282/

相关文章:

android - 如何在 Activity 中的视频播放器上叠加

c - LUA 在没有的地方显示错误

lua - 只有一台TCP服务器允许带Lua的ESP8266

java - 如何将文件/位图上传到 Cloud Firestore?

java - 无法在 RecyclerView 中从 Firebase 获取数据

Android 库 list

sdk - 如何将自己的库包含到 Yocto 生成的嵌入式 Linux 的工具链(SDK)中?

iphone - 供应概况

sdk - cognos sdk 在 cognos 安装文件夹中的位置

c++ - 如何在 C++ 中访问 package.preload 中的局部变量