问题描述
|
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
如何从Sprite表格创建动态尺寸的图像?
解决方法
使用display.contentScaleX http://developer.anscamobile.com/reference/index/displaycontentscalex
这是http://developer.anscamobile.com/forum/2010/12/08/dynamic-retina-spritesheets-heres-how
,这是我调整背景动画大小的方法。它由2帧组成,每帧794 x446。它必须是全屏横向模式。请参阅下面的步骤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()