【问题标题】:Corona SDK Level: Can't integrate my level into Storyboard - Assertion Failed errorCorona SDK 级别:无法将我的级别集成到 Storyboard - 断言失败错误
【发布时间】:2014-02-27 14:29:51
【问题描述】:

我希望有人可以帮助我,因为过去几天这个问题一直让我发疯。所以我刚开始使用电晕 - 制作了一些教程,并在发现各种可能性时真的很开心。 问题:我想将一个简单的游戏集成到故事板中。我无法找到正确的组合并且总是弹出这个错误。

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>

这可能是菜鸟的错误,但我已经卡了几天了,肯定需要一些帮助。我已经浏览了大部分我找不到的教程和文档。所以任何帮助都会非常受欢迎:) 所以这是我的第 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 coronasdk corona-storyboard


    【解决方案1】:

    因此,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,一个参数是字符串,另一个是函数。那个功能在哪里?它在117 线上,在51 线之后,这很可能是问题所在。在 LUA(和其他一些语言)中,您必须按顺序声明事物。所以你可以做两件事。您可以将shipSmash 函数移到51 行上方,或者您可以转发声明该变量。所以在你的文件的顶部你可以做local shipSmash。这可以确保行 51 存在该名称(它试图检查的内容),然后您可以稍后声明它(有时我这样做是为了代码结构)。

    希望这会有所帮助。我从大约 7 月开始就一直在使用 LUA/Corona SDK,但我仍然习惯了很多像这样的小事情,我花了好几个小时才把头发扯下来。

    【讨论】:

    • 谢谢!我改变了它,它工作!之后弹出另一个错误(不相关),但我设法弄清楚了一个:) 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多