Corona - как сделать спрайт-листы совместимыми с динамическим разрешением изображения - PullRequest
3 голосов
/ 14 апреля 2011

В Corona есть метод для создания изображений, которые будут отображаться динамически в зависимости от разрешения устройства:

img = display.newImageRect("image.png", 100, 100)

Отлично, но что, если все ваши изображения находятся в спрайт-листе, что рекомендуется для производительности? Затем вы должны сделать что-то вроде этого, чтобы отобразить изображение:

local data = require("sheet1")
local tileSheet = sprite.newSpriteSheetFromData("sheet1.png", data.getSpriteSheetData())
local tileSet = sprite.newSpriteSet(tileSheet, 1, 3)
local img = sprite.newSprite(tileSet)
img.currentFrame = 1

Как создавать изображения динамического размера из спрайтов?

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011
1 голос
/ 27 апреля 2013

Вот как я изменил размер фоновой анимации. Он состоял из 2 кадров, каждый 794 x 446. Это должен был быть полноэкранный, альбомный режим. См. Шаг 6 ниже.

--> Initialize background animations

-- 1. Data = define size and frames
local bgData = { width=794, height=446, numFrames=2, sheetContentWidth=1588, sheetContentHeight=446 }
-- 2. Sheet = define the sprite sheet
local bgSheet = graphics.newImageSheet( "hkc.png", bgData )
-- 3. Animation = define animation characteristics
local bgAnim = {
    { name = "bgAnimation", start = 1, count = 2, time = 800, loopCount = 0, -- repeat forever
      loopDirection = "forward"
    }
}
-- 4. Display the sprite (can't set size here unlike display.newImageRect)
local bg = display.newSprite( bgSheet, bgAnim )
-- 5. Center the animation
bg:setReferencePoint( display.CenterReferencePoint )
bg.x = display.contentCenterX
bg.y = display.contentCenterY
-- 6. Resize to match screen size based on a ratio with the actual background pixel dimensions
bg:scale( display.contentWidth / 794, display.contentHeight / 446 )
-- 7. Play the animation
bg:play()
...