Bnhjhvbq7
Bnhjhvbq7

Reputation: 169

Generate frames for graphics.newImageSheet animation

I try to build a function that generates frames list for graphics.newImageSheet. my function print seemingly correct list "1,2,3,4,5.." but graphics.newImageSheet reject it with the following error:

WARNING: Sequence (fastRun) has an invalid index (0) that falls outside the rang
e of valid image sheet frame indices: 1 <= index <= 9.

code:

function generateFrames(num)
    NumFrames = num
    frames = 1
    for i=2, NumFrames, 1 do
        frames = frames .. "," .. i
    end
end

sheetData = { width=32, height=40, numFrames=9, sheetContentWidth=96, sheetContentHeight=120 }

mySheet = graphics.newImageSheet( "media/enemies/enemy-" .. type .. ".png", sheetData)

generateFrames(9)

print("frames: " .. frames)

sequenceData = {
    { name = "fastRun", frames={ frames }, time=1000, loopCount = 0 }
}

Upvotes: 0

Views: 306

Answers (1)

NaviRamyle
NaviRamyle

Reputation: 4007

Don't use string in frames = {...}, use table.

function generateFrames(num)
    local frameTable = {}
    NumFrames = num
    frames = 1
    for i=2, NumFrames, 1 do
        table.insert(frameTable,i)
    end
end

sheetData = { width=32, height=40, numFrames=9, sheetContentWidth=96, sheetContentHeight=120 }

mySheet = graphics.newImageSheet( "media/enemies/enemy-" .. type .. ".png", sheetData)

generateFrames(9)

print("frames: " .. frames)

sequenceData = {
    { name = "fastRun", frames=frames , time=1000, loopCount = 0 }
}

Upvotes: 2

Related Questions