使用精灵表显示分数。

我想知道如何使用精灵表来显示分数。我的游戏是关于收集分数的,我想让这个能量条填满。当能量条充满时,一个空的能量条出现,为结束游戏提供服务。我有一个由70个PNG图像组成的精灵表。

我可以使用if语句逐个构建,但肯定有更好的方法。否则,代码会像这样:

如果分数==0,则
    显示新图像(“00.png”,x,y)
end
如果分数==1,则
    显示新图像(“01.png”,x,y)
end
如果分数==2,则
    显示新图像(“02.png”,x,y)
end
如果分数==3,则
    显示新图像(“03.png”,x,y)
end
...
如果分数==70,则
    显示新图像(“70.png”,x,y)
end

当分数为71时,将显示“01.png”。

点赞
用户2964945
用户2964945

由于得分值与所使用的文件名之间似乎存在直接关系(00-> '00.png',1->'01.png',... 70-> '70.png'等),并且在得分=70之后,整个序列就会重复,一种方法是首先摆脱70的倍数,然后在个位数得分前面附加0。这里是一个执行此操作的函数:

--给定一个分数,返回正确的图片名称
--例如,对于分数=01返回01.png
local function getFilenameFromScore(score)
    while true do
        if score < 71 then break end

        --通过减少70降低分数来摆脱70的倍数,
        --直到它为0-70
        score = score - 70
    end

    --如果分数在0和9之间(一位数字,长度为1)
    --在前面添加0
    --这也可以用模运算符%来完成
    if string.len(score) == 1 then
        score = '0' .. score
    end

    --追加.png并返回
    return score .. '.png'
end

然后,将得分显示如下:

local scorePicture = getFilenameFromScore(score)

display.newImage(scorePicture, x, y)

在这里,scorePicture将根据您描述的得分值方式而变化。

2014-12-29 16:31:03