graphics.newImageSheet()

类型 函数
graphics.*
返回值 图像图层
修订版 发行版 2024.3703
关键字 精灵图表、纹理图集、纹理内存、图像
另请参阅 图像图层 (指南)

概览

图像图层 对象有时称为精灵图表或纹理图集,让你能够从单个图像文件中加载多幅图像。图像图层必须用于 动画精灵,还可以用来预加载许多静态图像。

纹理采样

默认情况下,新图像图层会使用线性采样滤镜,这样当实际渲染区域大于或小于已加载纹理的像素维度时,图像看起来就会平滑些。

你可以通过调用 display.setDefault() 来更改默认纹理滤镜。某一图像首次加载后,相同的采样滤镜将用于随后加载的同一文件。这是因为纹理是按文件加载一次的。

需注意的问题

图像图层打包工具(如 TexturePacker)将输出 sourceXsourceYsourceWidthsourceHeight 参数以获取修剪过的帧。在屏幕上显示这些帧时,图像将按照未修剪帧尺寸的中心点定位。

如果你想使用根据屏幕分辨率自动选择的动态图像图层,则必须包含 sheetContentWidthsheetContentHeight 参数。详情请见下文。

在 Android 上,图像限制(缩小)为 2048×2048,即使设备上的最大纹理内存大小更大。原因是大多数 Android 设备没有足够的堆内存来加载图像。我们建议你不要加载大于 2048×2048 的图像文件。

语法

graphics.newImageSheet( filename, [baseDir, ] options )
文件名 (必需)

字符串. 这是包含图像图层所有帧的图像文件的文件名。此文件也称为“精灵图表”图像。

基本目录 (可选)

常量. 指定 filename 所在的基本目录。选项包括 system.ResourceDirectorysystem.DocumentsDirectorysystem.ApplicationSupportDirectorysystem.TemporaryDirectorysystem.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
}
x (必需)

Number纹理中帧的 x 位置。

y (必需)

Number纹理中帧的 y 位置。

宽度 (必需)

Number帧的宽度;如果裁剪,请在此处指定裁剪后的宽度。

高度 (必需)

Number帧的高度;如果裁剪,请在此处指定裁剪后的高度。

源宽度 (可选)

Number原始未裁剪帧的宽度。默认值与 width 相同。

源高度 (可选)

Number原始未裁剪帧的高度。默认值与 height 相同。

源 X (可选)

Number相对于未裁剪图片的裁剪矩形的 x 原点。默认值为 0

源 Y (可选)

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 )