Corona SDK级别:无法将我的级别集成到Storyboard - 断言失败错误

问题描述:

我希望有人能够帮助我,因为这个问题在最近几天一直让我疯狂。所以我刚从corona开始 - 做了一些教程,并且非常开心地发现了可能性。 问题:我想将简单的游戏集成到故事板中。我有些人无法找到合适的组合,并总是会弹出此错误消息。Corona SDK级别:无法将我的级别集成到Storyboard - 断言失败错误

File: assertion failed! 
Assertion failed! 
stack traceback: 
[C]: ? 
[C]: in function 'assert' 
?: in function 'get0rCreateTable' 
?: in function 'addEventListener' 
?: in function 'addEventListener' 
...ik/Desktop/_DummyProjekt2/Fruit Fliesv10/level01.lua:51: in function 
<. . . ik/Desktop/_DummyProjekt2/ Fruit Fliesv10/level0l. lua:44> 
?: in function 'dispatchEvent' 
?: in function <?:1096> 
(tail call): ? 
?: in function <?:466> 
?: in function <?:218> 

这可能是一个新手的错误,但我一直坚持了几天,现在肯定需要一些帮助。我已经通过大部分教程和文档找到了,但没有运气。因此,任何帮助将是greately欢迎:)所以这是我的第1级


local storyboard = require("storyboard") 
local scene = storyboard.newScene() 

local widget = require ("widget") 
local playfile = require ("play") 



function scene:createScene(event) 


local screenGroup = self.view 
local spawnEnemy 
local gameTitle 
local scoreTxt 
local score = 0 
local hitBowl 
local planet 
local speedBump = 0 



background = display.newImage("images/background.png") 
background.y = centerY 
background.x = centerX 


bowl = display.newImage("images/bowl2.png") 
bowl.x = centerX 
bowl.y = centerY 


scoreTxt = display.newText("Score: 0", 0, 0, "orange juice", 22) 
scoreTxt.x = centerX 
scoreTxt.y = 10 
scoreTxt:setFillColor(1,1,1) 
scoreTxt.y = 255 

end 





function scene:enterScene(event) 




enemypics = {"images/blue.png","images/pink.png", "images/green.png"} 
enemy = display.newImage(enemypics[math.random (#enemypics)]) 
enemy:addEventListener ("tap", shipSmash) 
    if math.random(2) == 1 then 
    enemy.x = math.random (-100, -10) 
else 
    enemy.x = math.random (display.contentWidth + 10, display.contentWidth + 100) 
    enemy.xScale = -1 
end 
enemy.y = math.random (display.contentHeight) 
enemy.trans = transition.to (enemy, { x=centerX, y=centerY, time=math.random(2500-speedBump, 4500-speedBump), onComplete=hitBowl }) 
speedBump = speedBump + 50 

end 



function startGame() 
text = display.newText("Tap here to start. Protect the Fruit Bowl!", 0, 0, "orange juice", 24) 
text.x = centerX 
text.y = display.contentHeight - 30 
text:setFillColor(0, 0, 0) 
local function goAway(event) 
display.remove(event.target) 
    text = nil 
    display.remove(gameTitle) 
    spawnEnemy() 
    scoreTxt.alpha = 1 
    scoreTxt.text = "Score: 0" 
    score = 0 
    bowl.numHits = 10 
    bowl.alpha = 1 
    speedBump = 0 
end 
text:addEventListener ("tap", goAway) 
end 



local function bowlDamage() 
    bowl.numHits = bowl.numHits - 2 
    bowl.alpha = bowl.numHits/10 
    if bowl.numHits < 2 then 
    bowl.alpha = 0 
    timer.performWithDelay (1000, startGame) 
    --audio.play (sndLose) 
else 
    local function goAway(obj) 
     bowl.xScale = 1 
     bowl.yScale = 1 
     bowl.alpha = bowl.numHits/10 
    end 
    transition.to (bowl, { time=200, xScale=1.2, yScale=1.2, alpha=1, onComplete=goAway}) 
end 
end 

function hitBowl(obj) 

display.remove(obj) 
bowlDamage() 
--audio.play(sndBlast) 
if bowl.numHits > 1 then 
    spawnEnemy() 
end 
end 


local function shipSmash(event) 
local obj = event.target 
display.remove(obj) 
--audio.play(sndKill) 
transition.cancel (event.target.trans) 
score = score + 5 
scoreTxt.text = "Score: " .. score 
spawnEnemy() 

end 



function scene:exitScene(event) 

end 


function scene:destroyScene(event) 

end 

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

return scene 

所以LUA是在很多方面的乐趣,这是一个你会学得很快。所以我只认为这可能是问题,如果不是,它可能会导致你在正确的道路上。

在你上面的错误信息,你会看到,它给你:

...ik/Desktop/_DummyProjekt2/Fruit Fliesv10/level01.lua:51: in function

level01.lua:51表示一个行号,所以线51(或者身边有)。并且在错误中提到的上面的行提到了addEventListener。这两件事是我们的线索。

下面是一些代码从周围还有:

enemy = display.newImage(enemypics[math.random (#enemypics)]) 
enemy:addEventListener ("tap", shipSmash) 
    if math.random(2) == 1 then 

看起来像有一个的addEventListener存在,一个参数是一个字符串,另一个是功能。该功能在哪里?这是行这是行后51这是最有可能的问题。在LUA(和其他一些语言)中,你必须按顺序声明事物。所以你可以做两件事。您可以将shipSmash函数移到51之上,或者您可以转发声明该变量。所以在文件的顶部你可以做local shipSmash。这可以确保行51该名称存在(它要检查的内容),然后可以稍后声明它(有时我会为代码结构执行此操作)。

希望有帮助。自从7月份以来,我一直在使用LUA/Corona SDK,但我仍然习惯了很多这样的小事,我花了好几个小时把头发扯出来。

+0

谢谢!我改变了它,它的工作!之后弹出另一个错误(无关),但我设法弄清楚这一点:)非常感谢! – Samantha