[英]citizen:/scripting/lua/scheduler.lua:61: attempt to call a nil value (upvalue 'fn')
[英]Corona SDK(LUA) - attempt to call upvalue 'spawnEnemy'(a nil value)
我只是嘗試將eventListener添加到一個對象,當我點擊它時它應該消失。 但我在標題中提到了錯誤。 這是我的整個代碼:
-- housekeeping stuff
display.setStatusBar(display.HiddenStatusBar)
local centerX = display.contentCenterX
local centerY = display.contentCenterY
-- set up forward references
local spawnEnemy
-- preload audio
-- create play screens
local function createPlayScreen()
local bg = display.newImage("background.png")
bg.y = 130
bg.x = 100
bg.alpha = 0
local planet = display.newImage("planet.png")
planet.x = centerX
planet.y = display.contentHeight +60
planet.alpha = 0
transition.to( bg, { time = 2000, alpha = 1, y = centerY, x = centerX } )
local function showTitle()
local gametitle = display.newImage("gametitle.png")
gametitle.alpha = 0
gametitle:scale (4, 4)
transition.to( gametitle, { time = 500, alpha = 1, xScale = 1, yScale = 1 })
spawnEnemy()
end
transition.to( planet, { time = 2000, alpha = 1, y = centerY, onComplete = showTitle } )
end
-- game functions
local function shipSmash(event)
local obj = event.target
display.remove( obj )
end
local function spawnEnemy()
local enemy = display.newImage("beetleship.png")
enemy.x = math.random(20, display.contentWidth - 20)
enemy.y = math.random(20, display.contentHeight - 20)
enemy:addEventListener ( "tap", shipSmash )
end
local function startGame()
end
local function planetDamage()
end
local function hitPlanet(obj)
end
createPlayScreen()
startGame()
這是錯誤窗口的樣子:
我是這個領域的新手(LUA編程)所以很抱歉可能是愚蠢的語法錯誤或其他什么,但我看到的是我寫這行代碼后出現這個錯誤: enemy:addEventListener ( "tap", shipSmash )
將local function spawnEnemy()
更改為function spawnEnemy()
因為此變量已在前面聲明過。 是的,這是初學者的典型Lua陷阱。
您已將spawnEnemy
聲明為局部變量兩次。 這是允許的(第二個隱藏第一個,其中第二個在范圍內),但這不是你想要的。
您已正確聲明了一個局部變量並在showTitle
捕獲了它。 要在以后設置同一個變量,請使用賦值語句,而不使用local
前綴。 您可以使用“匿名”函數語法為其分配函數定義:
spawnEnemy = function()
...
end
實際上,在Lua中, 所有函數都是匿名的,因為它們只是值。 但是,對於調試,使用與函數關聯的名稱會很有幫助。 在堆棧跟蹤中,盡可能使用用於調用該函數的變量的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.