生命条:如何在与其他对象碰撞时增加生命条?

我已按照以下方式构建了我的生命条(渐进条):

function scene:enterScene(event)
    storyboard.removeScene("start")
    screenGroup = self.view
    lifeBar = {}
    lives = 141 -- 全部生命条的全局宽度
    maxLives = 141
    for i = 1, maxLives do
        lifeBar[i] = display.newImage("lifebar.png") --lifebar.png 图像宽度为1px
        lifeBar[i].anchorX=0
        lifeBar[i].anchorY=0.6
        lifeBar[i].x = fuel_title.x +114+13.5+(lifeBar[i].contentWidth * (i - 1))
        lifeBar[i].y = 37 -- 从10,10开始
        lifeBar[i].isVisible=true
        screenGroup:insert(lifeBar[i])
    end
end

因此,由于您的帮助,我知道了一个可以增加生命值的函数(livesValue.text显示增加的生命值),但是 lifeBar{} 表似乎有些问题,因为我看不到生命条图像的变化。我的问题是:我的表 lifeBar 有什么问题吗?

 if (event.other.myName == "fuel") then
    if lives > maxLives then
        lives = maxLives
    elseif lives < #lifeBar then
        lives = lives + 1
            lifeBar[lives].isVisible=true
        end
  livesValue.text = string.format("%d", lives)
  local other = event.other
  timer.performWithDelay(1, function() other:removeSelf() end)
end
    Runtime:addEventListener("touch", FuelManage)
点赞
用户869951
用户869951

尝试这样做:

function onCollision( self, event )
    if event.phase == "began" then
        if event.other.myName == "fuel" then

            -- 如果还有空位,增加生命条:
            if lives < #lifeBar then
                lives = lives + 1
                lifeBar[lives].isVisible=true
            end

            -- 安排与之发生碰撞的燃料对象进行移除:
            local other = event.other -- 不能使用 event 作为 upvalue
            timer.performWithDelay(1, function() other:removeSelf() end)
        end
    end
end

注意,您不允许在碰撞处理程序中删除碰撞对象,您必须使用延迟进行此操作,如 Corona 碰撞文档页面中所述。所以我已经完成了。此外,您只应在 lifeBar 中有空位时添加生命值(类似地,您应该修复代码,仅当有超过 0 的生命时才删除生命)。

2014-04-25 16:28:12