转场场景不起作用。

我是 Lua 新手,正在使用 Corona SDK 和 Outlook 编辑代码。我正在创建一个简单的游戏,但遇到了一个奇怪的问题。我的屏幕如下:

主菜单->游戏->结束游戏屏幕

在结束屏幕中,玩家可以选择再次玩游戏或通过转到主菜单屏幕更改难度。当我使用 composer.gotoScene("play", "fade", 500) 时,它有效,但当我使用 composer.gotoScene("main_menu", "fade", 500) 时它不起作用。有人知道为什么吗?

以下是我的代码:

local composer = require("composer")
local scene = composer.newScene()
-- 包含 Corona 的 "widget" 库
local widget = require "widget"

-- 先定义本地引用
local playBtn;
local exitBtn;

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

local function onPlayBtnRelease()
    composer.gotoScene("play", "fade", 500)
    return true -- 表示触摸成功
end

local function onExitBtnRelease()
    composer.gotoScene("main_menu", "fade", 500)
    return true -- 表示触摸成功
end

-- "scene:create()"
function scene:create(event)

    local sceneGroup = self.view
    -- 在此处初始化场景。
    -- 示例:添加显示对象到 "sceneGroup",添加触摸侦听器等。

    playBtn = widget.newButton{
        label = "",
        defaultFile = "playbutton_up1.png",
        overFile = "playbutton_up1.png",
        width = 206, height = 65,
        onRelease = onPlayBtnRelease -- 事件监听函数
    }
    playBtn.x = display.contentWidth * 0.25
    playBtn.y = display.contentHeight * 0.35

    exitBtn = widget.newButton{
        label = "",
        defaultFile = "exitbutton_up.png",
        overFile = "exitbutton_up.png",
        width = 206, height = 65,
        onRelease = onExitBtnRelease -- 事件监听函数
    }
    exitBtn.x = display.contentWidth * 0.75
    exitBtn.y = display.contentHeight / 1.05

end

-- "scene:show()"
function scene:show(event)

    local sceneGroup = self.view
    local phase = event.phase

    if (phase == "will") then
        -- 当场景仍然在屏幕外(但即将进入屏幕)时调用。
    elseif (phase == "did") then
        -- 当场景现在在屏幕上时调用。
        -- 在此处插入代码,使场景活跃。
        -- 例如:启动计时器,开始动画,播放音频等。
    end
end

-- "scene:hide()"
function scene:hide(event)

    local sceneGroup = self.view
    local phase = event.phase

    if (phase == "will") then
        -- 当场景在屏幕上(但即将离开屏幕)时调用。
        -- 在此处插入代码以“暂停”场景。
        -- 例如:停止计时器,停止动画,停止音频等。
    elseif (phase == "did") then
        -- 当场景离开屏幕后立即调用。
    end
end

-- "scene:destroy()"
function scene:destroy(event)

    local sceneGroup = self.view

    -- 在场景视图 ("sceneGroup") 被移除之前调用。
    -- 在此处插入代码以清理场景。
    -- 例如:移除显示对象,保存状态等。
end

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

-- 侦听器设置
scene:addEventListener("create", scene)
scene:addEventListener("show", scene)
scene:addEventListener("hide", scene)
scene:addEventListener("destroy", scene)

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

return scene
点赞
用户2424993
用户2424993

你需要将元素插入到场景视图中。

sceneGroup:insert( playBtn )

等等。

2014-07-18 14:04:38