2014-03-18 22 views
0
Error Line: 92 

Attempt to index global 'fifteenButton' (a nil value) 

stack traceback: 
[C]: ? 
/Users/ejaytumacder/dev/HappyShaker/time_select.lua:92: in function </Users/ejaytumacder/dev/HappyShaker/time_select.lua:90> 
?: in function 'dispatchEvent' 
?: in function '?' 
?: in function 'gotoScene' 
/Users/ejaytumacder/dev/HappyShaker/time_select.lua:12: in function '_onRelease' 
?: in function '?' 
?: in function <?:406> 
?: in function <?:218> 

這是我得到上述錯誤,以下是其來源的代碼。錯誤:試圖指數全球「fifteenButton」(一個零值)

local storyboard = require("storyboard") 
local widget = require("widget") 

local scene = storyboard.newScene() 

local mydata = require("mydata") 

local function fifteenSecondButtonEvent(event) 
    local phase = event.phase 
    if "ended" == phase then 
     mydata.time = 15 
     storyboard.gotoScene("play") 
    end 
end 

local function thirtySecondButtonEvent(event) 
    local phase = event.phase 
    if "ended" == phase then 
     mydata.time = 30 
     storyboard.gotoScene("play") 
    end 
end 

local function sixtySecondButtonEvent(event) 
    local phase = event.phase 
    if "ended" == phase then 
     mydata.time = 60 
     storyboard.gotoScene("play") 
    end 
end 



function scene:createScene(event) 
    local group = self.view 
    local timeText = display.newText("TIME", 160, 70, "Helvetica", 30) 
    group:insert(timeText) 

    local fifteenButton = widget.newButton { 
     time = 15, 
     left = 75, 
     top = 150, 
     width = 164, 
     height = 42, 
     defaultFile = "fifteen_button.png", 
     overFile = "fifteen_button_pressed.png", 
     label = "", 
     onRelease = fifteenSecondButtonEvent 
    } 
    --group:insert(fifteenButton) 

    local thirtyButton = widget.newButton { 
     time = 30, 
     left = 75, 
     top = 250, 
     width = 164, 
     height = 42, 
     defaultFile = "thirty_button.png", 
     overFile = "thirty_button_pressed.png", 
     label = "", 
     onRelease = thirtySecondButtonEvent 
    } 
    --group:insert(thirtyButton) 

    local sixtyButton = widget.newButton { 
     time = 60, 
     left = 75, 
     top = 350, 
     width = 164, 
     height = 42, 
     defaultFile = "sixty_button.png", 
     overFile = "sixty_button_pressed.png", 
     label = "", 
     onRelease = sixtySecondButtonEvent 
    } 
    group:insert(fifteenButton) 
    group:insert(thirtyButton) 
    group:insert(sixtyButton) 
    print("Number of children in Display Group: " .. group.numChildren) 
end 

function scene:willEnterScene(event) 
    local group = self.view 
end 

function scene:enterScene(event) 
    local group = self.view 
end 

function scene:exitScene(event) 
    local group = self.view 
    fifteenButton:removeEventListener('onRelease', fifteenSecondButtonEvent) -- line 92 
    thirtyButton:removeEventListener('onRelease', thirtySecondButtonEvent) 
    sixtyButton:removeEventListener('onRelease', sixtySecondButtonEvent) 

    timeText:removeSelf() 
    timeText = nil 
    if fifteenButton then 
     fifteenButton:removeSelf() 
     fifteenButton = nil 
    end 

    if thirtyButton then 
     thirtyButton:removeSelf() 
     thirtyButton = nil 
    end 

    if sixtyButton then 
     sixtyButton:removeSelf() 
     sixtyButton = nil 
    end 

    display.remove(group) 
    storyboard.removeScene("time_select") 

end 

function scene:destroyScene(event) 
    local group = self.view 
end 

scene:addEventListener("createScene", scene) 
scene:addEventListener("willEnterScene", scene) 
scene:addEventListener("enterScene", scene) 
scene:addEventListener("exitScene", scene) 
scene:addEventListener("destroyScene", scene) 

return scene 

回答

2

所以你的問題有兩個問題正在進行。我要解決你爲什麼會遇到這種錯誤。

由於您在createScene函數中定義了fifteenButton,因此您在92行上發生了該錯誤。作爲本地對象。所以它不能在createScene函數之外被引用。要解決該問題,您應該將local fifteenButton, thirtyButton, sixtyButton添加到文件的頂部。然後從createScene中的相同命名變量之前刪除local。這將解決你的錯誤。

+0

謝謝Fernker。錯誤消失了,但是當我進入場景時,所有顯示對象都拒絕顯示。他們錯過了。它是一個小部件的問題? –

+0

@EjayTumacder這是一個單獨的問題。您應該編輯您的問題以關注錯誤,接受此答案,然後用更新的代碼發佈有關對象問題的新問題。 – Schollii

相關問題