【问题标题】:Corona - how to make sprite sheets compatible with dynamic image resolutionCorona - 如何使精灵表与动态图像分辨率兼容
【发布时间】:2011-08-05 18:55:30
【问题描述】:

Corona 有一种方法可以创建将根据设备分辨率动态显示的图像:

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

很好,但是如果您的所有图像都在一个 sprite 表中,而这对于性能来说是推荐的呢?然后你必须做这样的事情来显示图像:

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

如何从精灵表创建动态大小的图像?

【问题讨论】:

    标签: image lua coronasdk sprite-sheet


    【解决方案1】:

    【讨论】:

    • 谢谢。在那里也发现了 SpriteGrabber。当然,一旦我费尽心思这样做,Ansca 就会推出一个 API 来处理这一切......
    • 那些鬼鬼祟祟的混蛋,搞什么新功能。
    【解决方案2】:

    这是我调整背景动画大小的方法。它由 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 2012-07-27
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      相关资源
      最近更新 更多