我的onRelease调用有什么问题吗?

我正使用 Corona 模拟器开发我的第一个移动应用程序。我尝试让我的其中一个按钮转到另一个场景,它将显示另一页。目前这是我的代码:

------------------main.lua-----------------
display.setStatusBar( display.HiddenStatusBar )
local storyboard = require "storyboard"
storyboard.gotoScene( "MainScreen" )

------------------MainScreen.lua------------------------
local composer = require( "composer" )
local storyboard = require ("storyboard")
local widget = require "widget"
local scene = storyboard.newScene()

local function returnStates()
        storyboard.gotoScene( "states", "crossFade", 1000 )
    return true
end

local function returnMonth()
        storyboard.gotoScene( "months", "crossFade", 1000 )
    return true
end

----------------------------------------
function scene:createScene( event )
    local group = self.view
    local background = display.newImage( "blue.jpg" )
     local logo = display.newImage("black.png")
            logo.x=160
            logo.y=100
     local xor = display.newImage("or.png")
            xor.x=145
            xor.y=315

        buttonHome = widget.newButton{
            defaultFile = "statebutton.png",
            overFile = "pressedstate.png",
            onRelease = returnStates
        }
        buttonHome.x = 160
        buttonHome.y = 230

        buttonHome2 = widget.newButton{
            defaultFile = "monthbutton.png",
            overFile = "pressedmonth.png",
            onRelease = returnMonth()
        }
        buttonHome2.x = 160
        buttonHome2.y = 400

        group:insert ( background )
        group:insert ( buttonHome )
        group:insert ( buttonHome2 )

end
function scene:enterScene( event )
    local group = self.view
end
function scene:exitScene( event )
    local group = self.view
end
function scene:destroyScene( event )
    local group = self.view
     if buttonHome then
        buttonHome:removeSelf()
        buttonHome = nil
    end
     if buttonHome2 then
        buttonHome2:removeSelf()
        buttonHome2 = nil
    end
end
scene:addEventListener( "createScene", scene )
scene:addEventListener( "enterScene", scene )
scene:addEventListener( "exitScene", scene )
scene:addEventListener( "destroyScene", scene )
return scene

问题

我在 Corona 模拟器中遇到以下错误:

states.lua:: attempt to index global 'self' (a nil value)
stack traceback:
[C]: in function 'error'
?: in function 'gotoScene'
MainScreen.lua:8: in function '_onRelease'
?: in function '?'
?: in function <?:677>
?: in function <?:221>

我的 onRelease 调用有什么问题吗?

有人能解释一下这意味着什么或我该如何解决吗?

点赞
用户2765603
用户2765603

是的。问题在于这一行

onRelease = returnMonth()

这一行将调用 returnMonth() 方法,并将结果放入调用表格的 onRelease 参数中以触发 widget.newButton。我无法从这里进行测试,但我很确定你应该删除括号:

onRelease = returnMonth

编辑:此外,storyboard:gotoScene(...) - 显然需要 self 参数,使用冒号而不是点号将会使它正常运行。

2015-06-12 07:24:41