在main.lua中出现了错误:178:尝试索引全局变量'pausebutton'(一个空值)

我在Corona模拟器控制台中出现了错误

尝试索引全局'pausebutton'(一个空值)

如何解决我的Corona错误?

我在下面的main.lua文件中放置了最相关的代码

--显示暂停按钮
function pauseAndResume()
   local pausebutton = display.newImage(“ pause.png”)
   pausebutton:translate(100,100)
   pausebutton:addEventListener(“ touch”,pauseGame)

   local resumebutton = display.newImage(“ resumed.png”)
   resumebutton:translate(100,100)
   resumebutton.isVisible = false
   resumebutton:addEventListener(“ touch”,resumeGame)
end

function pauseGame(event)
   if(event.phase ==“ ended”)then
        physics.pause()
        pausebutton.isVisible = false
        resumebutton.isVisible = true
        timer.pause(fruitTimer)
        timer.pause(bombTimer)
        sampleVar = false
        return true
   end
end

function resumeGame(event)
   if(event.phase ==“ ended”)then
        physics.start()
        pausebutton.isVisible = true
        resumebutton.isVisible = false
        timer.resume(fruitTimer)
        timer.resume(bombTimer)
        sampleVar = true
        return true
   end
end
点赞
用户7026995
用户7026995

我认为你出错了,因为局部变量pausebuttonresumebutton只在执行pauseAndResume函数时存在。之后它们就不存在了。所以你需要在它们对pauseAndResumepauseGame函数可用的块中声明,比如在main.lua文件的开头。

尝试一下:

local pausebutton
local resumebutton

...

-- 显示暂停按钮
function pauseAndResume()
    pausebutton = display.newImage("pause.png")
    pausebutton : translate(100, 100)
    pausebutton:addEventListener("touch", pauseGame)

    resumebutton = display.newImage("resumed.png")
    resumebutton: translate(100, 100)
    resumebutton.isVisible = false
    resumebutton:addEventListener("touch", resumeGame)
end

function pauseGame(event)
    if (event.phase == "ended") then
        physics.pause()
        pausebutton.isVisible = false
        resumebutton.isVisible = true
        timer.pause(fruitTimer)
        timer.pause(bombTimer)
        sampleVar = false
        return true
    end
end

function resumeGame(event)
    if (event.phase == "ended") then
        physics.start()
        pausebutton.isVisible = true
        resumebutton.isVisible = false
        timer.resume(fruitTimer)
        timer.resume(bombTimer)
        sampleVar = true
        return true
    end
end

来自Lua文档

我们使用local语句创建局部变量:

j = 10         -- 全局变量
local i = 1    -- 局部变量

与全局变量不同,局部变量的作用域仅限于它们声明的块。块是控制结构的主体、函数的主体或块(文件或包含代码的字符串,其中声明变量)。

2016-11-24 15:39:20