类型 函数 库 graphics.* 返回值 图像图层 修订版 发行版 2024.3703 关键字 精灵图表、纹理图集、纹理内存、图像 另请参阅 图像图层 (指南)
图像图层 对象有时称为精灵图表或纹理图集,让你能够从单个图像文件中加载多幅图像。图像图层必须用于 动画精灵,还可以用来预加载许多静态图像。
默认情况下,新图像图层会使用线性采样滤镜,这样当实际渲染区域大于或小于已加载纹理的像素维度时,图像看起来就会平滑些。
你可以通过调用 display.setDefault() 来更改默认纹理滤镜。某一图像首次加载后,相同的采样滤镜将用于随后加载的同一文件。这是因为纹理是按文件加载一次的。
图像图层打包工具(如 TexturePacker)将输出 sourceX、sourceY、sourceWidth 和 sourceHeight 参数以获取修剪过的帧。在屏幕上显示这些帧时,图像将按照未修剪帧尺寸的中心点定位。
如果你想使用根据屏幕分辨率自动选择的动态图像图层,则必须包含 sheetContentWidth 和 sheetContentHeight 参数。详情请见下文。
在 Android 上,图像限制(缩小)为 2048×2048,即使设备上的最大纹理内存大小更大。原因是大多数 Android 设备没有足够的堆内存来加载图像。我们建议你不要加载大于 2048×2048 的图像文件。
graphics.newImageSheet( filename, [baseDir, ] options )
字符串. 这是包含图像图层所有帧的图像文件的文件名。此文件也称为“精灵图表”图像。
常量. 指定 filename 所在的基本目录。选项包括 system.ResourceDirectory、system.DocumentsDirectory、system.ApplicationSupportDirectory、system.TemporaryDirectory 和 system.CachesDirectory。默认值为 system.ResourceDirectory。
Table。带有代表结果图像表图片的特定选项的键的表——有关详细信息,请参阅下一节。
根据图像表图片的布局,options 表可以用两种方式进行配置
此配置假定图像表图片纹理中的所有帧共享相同的属性。
local options =
{
--required parameters
width = 50,
height = 50,
numFrames = 3,
--optional parameters; used for scaled content support
sheetContentWidth = 150, -- width of original 1x size of entire sheet
sheetContentHeight = 50 -- height of original 1x size of entire sheet
}
Number。图像表图片纹理中所有图片(帧)的宽度。
Number。图像表图片纹理中所有图片(帧)的高度。
Number。图像表图片中图片(帧)的总数。
Number。每个帧周围的边框,通常用于其边缘被挤压以消除重缝痕迹的瓦片。默认值为 0。当大于 0 时,将覆盖用于裁剪帧的裁剪选项。
这些值告诉 Solar2D 原始 1x 图像表图片的大小。举例来说,如果你正在为 iPad 和 iPad Retina 开发,并且你正在为常规 iPad 使用 1000×1000 的图像表图片,那么你应该为此两个值指定 1000,然后以 2000×2000 来设计你的 Retina 图像表图片。有关此主题的更多信息,请参阅 项目配置 指南。
如果图像表图片有不同大小的帧,则需要此配置。在这种情况下,options 包含父 frames 表内的表数组,并且这些表中的每个表都代表图像表图片中的单个帧。
local options =
{
--array of tables representing each frame (required)
frames =
{
-- Frame 1
{
--all parameters below are required for each frame
x = 2,
y = 70,
width = 50,
height = 50
},
-- Frame 2
{
x = 2,
y = 242,
width = 50,
height = 52
},
-- Frame 3 and so on...
},
-- Optional parameters; used for scaled content support
sheetContentWidth = 1024,
sheetContentHeight = 1024
}
Number。纹理中帧的 x 位置。
Number。纹理中帧的 y 位置。
Number。帧的宽度;如果裁剪,请在此处指定裁剪后的宽度。
Number。帧的高度;如果裁剪,请在此处指定裁剪后的高度。
Number。原始未裁剪帧的宽度。默认值与 width 相同。
Number。原始未裁剪帧的高度。默认值与 height 相同。
Number。相对于未裁剪图片的裁剪矩形的 x 原点。默认值为 0。
Number。相对于未裁剪图片的裁剪矩形的 y 原点。默认值为 0。
Number。每个单独帧周围的像素量。这对缩放图像表图片非常必要,因为这样可以消除边缘周围的混合痕迹。默认值为 0。
这些值告诉 Solar2D 原始 1x 图像表图片的大小。举例来说,如果你正在为 iPad 和 iPad Retina 开发,并且你正在为常规 iPad 使用 1000×1000 的图像表图片,那么你应该为此两个值指定 1000,然后以 2000×2000 来设计你的 Retina 图像表图片。有关此主题的更多信息,请参阅 项目配置 指南。
local options =
{
-- Required parameters
width = 70,
height = 41,
numFrames = 2,
-- Optional parameters; used for scaled content support
sheetContentWidth = 70, -- width of original 1x size of entire sheet
sheetContentHeight = 82 -- height of original 1x size of entire sheet
}
local imageSheet = graphics.newImageSheet( "characterSheet.png", options )
local options =
{
-- Array of tables representing each frame (required)
frames =
{
-- Frame 1
{
x = 2,
y = 70,
width = 50,
height = 50
},
-- Frame 2
{
x = 2,
y = 242,
width = 50,
height = 52
},
},
-- Optional parameters; used for scaled content support
sheetContentWidth = 1024,
sheetContentHeight = 1024
}
local imageSheet = graphics.newImageSheet( "characterSheet.png", options )