【发布时间】:2016-10-26 11:42:00
【问题描述】:
好的,我的问题是 Corona SDK 给了我错误,当我在一段时间后尝试移除爆炸对象时,尝试调用方法“removeSelf()”(一个 nil 值)。我尝试了许多不同的解决方案,但都没有奏效。我是 Corona SDK 的新手,所以我需要帮助。这是有问题的代码:
local function addExplosion(x, y)
local explosion = display.newImage("Explosion.png", x, y)
physics.addBody(explosion, "static")
timer.performWithDelay(1000, function(self)
self:removeSelf()
end, 1)
end
local function onCollision(event)
if (event.phase == "began") then
if(event.object1.hasCollided == false and event.object2.hasCollided == false and event.object1.y > 50) then
local explosionSound = audio.loadSound("Explosion.ogg")
local explosionChannel = audio.play(explosionSound)
local collisionX = (event.object1.x + event.object2.x) * 0.5
local collisionY = (event.object1.y + event.object2.y) * 0.5
event.object1.hasCollided = true
event.object2.hasCollided = true
event.object1:removeSelf()
event.object2:removeSelf()
addExplosion(collisionX, collisionY)
score = score - 5
scoreText.text = score
end
end
end
local function addBomb()
local startX = math.random(display.contentWidth * 0.1, display.contentWidth * 0.9)
local bomb = display.newImage("bomb.png", startX, -10)
physics.addBody(bomb, "dynamic")
bomb.hasCollided = false
Runtime:addEventListener("enterFrame", bomb)
bomb:addEventListener("touch", bombTouched)
end
local function addBalloon()
local startX = math.random(display.contentWidth * 0.1, display.contentWidth * 0.9)
local balloon = display.newImage("red_balloon.png", startX, display.contentHeight + 50)
physics.addBody(balloon, "dynamic")
balloon.gravityScale = -0.5
balloon.enterFrame = offscreen
balloon.hasCollided = false
Runtime:addEventListener("enterFrame", balloon)
Runtime:addEventListener("collision", onCollision)
end
【问题讨论】: