电晕-如何使子板与动态图像分辨率兼容

问题描述

| 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()
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...