使用spritesheet显示分数

时间:2014-12-29 10:35:56

标签: lua corona sprite sprite-sheet

我想知道如何使用spritesheet显示分数。我的游戏是关于点数收集,我想让这个能量棒填满。当能量棒充满时,会弹出一个空的,完整的一个将消失以用于最终游戏目的。我的spritesheet由70张图片组成。

我可以使用if语句来构建它,但必须有更好的方法。否则它看起来像这样

if score == 0 then
    display.newImage("00.png", x, y)
end
if score == 1 then
    display.newImage("01.png", x, y)
end
if score == 2 then
    display.newImage("02.png", x, y)
end
if score == 3 then
    display.newImage("03.png", x, y)
end
...
if score == 70 then
    display.newImage("70.png", x, y)
end

当分数为71时,显示" 01.png"

1 个答案:

答案 0 :(得分:0)

由于您使用的得分值和文件名之间似乎存在直接关系(意味着00 - > '00 .png',1 - > '01 .png',... 70 - >' 70.png'等),并且在得分= 70之后,整个序列重复,这样做的一种方式是首先,摆脱70的乘法,然后在前面加上0来获得单位数分数。这是一个能够做到这一点的功能:

-- Given a score, returns correct picture name
-- eg. for score = 01 returns 01.png
local function getFilenameFromScore(score)
    while true do
        if score < 71 then break end

        -- get rid of multiplies of 70 by reducing score by 70
        -- until it's 0-70
        score = score - 70
    end

    -- if score is between 0 and 9 (one digit, so length is 1)
    -- add 0 in front
    -- this could also be done with modulo %
    if string.len(score) == 1 then
        score = '0' .. score
    end

    -- append .png and return
    return score .. '.png'
end

之后,显示得分如下:

local scorePicture = getFilenameFromScore(score)

display.newImage(scorePicture, x, y)

此处,scorePicture将以您描述的方式取决于得分值。