2014-12-29 53 views
0

我想知道如何使用spritesheet顯示分數。我的比賽是關於點收集,我想要這個能量棒填滿。當能量棒滿了時,會彈出一個空的彈出來,完整的彈出框爲了最終遊戲目的而消失。 spritesheet我有70個PNG圖像。使用spritesheet顯示分數

我可以使用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」

+0

71 - > 01.png,141,211,281等等,01.png呢? – Melquiades

+0

也是01.png –

+0

http://docs.coronalabs.com/api/library/widget/newProgressView.html –

回答

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將在您所描述的方式取決於分數值。