最近,当我遇到一个我似乎无法修复的问题时,我正在编写一个新游戏。
这是代码:
function newPower()
rand = math.random( 100 )
if (rand < 80) then
powerup = display.newImage("power.png");
powerup.class = "powerup"
powerup.x = 60 + math.random( 160 )
powerup.y = -100
physics.addBody( powerup, { density=0.9, friction=0.3, bounce=0.3} )
powerup:addEventListener( "touch", handlePowerTouch )
end
end
local function handlePowerTouch( event )
if event.phase == "began" then
currentScore = currentScore * 2
currentScoreDisplay.text = string.format( "%06d", currentScore )
event.target:removeSelf()
return true
end
end
local function spawnpowers()
-- Spawn a new powerup every second until canceled.
spawnPower = timer.performWithDelay( 1000, newPower, -1 )
end
我们将非常感谢您解决此问题的任何帮助! 我遇到的问题是当我点击&#34;运行&#34;或者&#34;玩&#34;游戏开始工作然后崩溃并显示以下消息:
addEventListener:listener不能为nil:nil stack traceback: ?:in function&#39; addeventListener&#39; game.lua63:在函数&#39; _listener&#39; &lt; - 我给你game.lua:63以上。
由于
答案 0 :(得分:1)
powerup:addEventListener( "touch", handlePowerTouch )
此处handlePowerTouch为nil,因为函数定义在此行之后。
将你的函数定义移到该行的前面,然后它应该可以工作。
顺便问一下,你有这么多全局变量的原因是什么?你应该尽可能使用局部变量。