2015-06-12 29 views
1

目前正在使用Corona模拟器开发我的第一款移动应用程序。我试图让我的一个按钮去另一个场景,它会显示另一个页面。目前,这是我我的onRelease呼叫有问题吗?

------------------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 

问题

我有一个很难搞清楚为什么我收到从我的电晕模拟器此错误:

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电话?

任何人都可以向我解释这是什么意思或如何解决这个问题?

回答

2

是的。问题是线

onRelease = returnMonth() 

这条线将调用returnMonth()方法,并把结果呼叫表中的onRelease参数widget.newButton。我不能从这里测试,但我敢肯定,你应该删除括号:

onRelease = returnMonth 

编辑:另外,storyboard:gotoScene(...) - 它显然需要自我说法,并使用冒号,而不是点会给它只是那。

+0

你好,谢谢你的反应不幸的是我已经把它改为 onRelease = returnMonth 现在我得到这个错误 states.lua6:试图索引全球的“自我”(一个零值) 栈回溯: [C]:在函数'error'中 ?:在函数'gotoScene'中 MainScreen.lua:8:在函数中'_onRelease' ?:in function'?' ?:功能 ?:在功能 我是否也必须在新的场景上有作曲家专栏? – ratman