跳到主要内容

egret.SpriteSheet

   egret

   public class SpriteSheet

继承    egret.SpriteSheet → egret.HashObject

子类    egret.BitmapFont

SpriteSheet 是一张由多个子位图拼接而成的集合位图,它包含多个 Texture 对象。每一个 Texture 都共享 SpriteSheet 的集合位图,但是指向它的不同的区域。在WebGL / OpenGL上,这种做法可以显著提升性能同时,SpriteSheet可以很方便的进行素材整合,降低HTTP请求数量SpriteSheet 格式的具体规范可以参见此文档 https://github.com/egret-labs/egret-core/wiki/Egret-SpriteSheet-Specification

公共属性

属性

公共方法

方法
SpriteSheet(texture:egret.Texture)
创建一个 egret.SpriteSheet 对象
createTexture(name:string,bitmapX:number,bitmapY:number,bitmapWidth:number,bitmapHeight:number,offsetX:number,offsetY:number,textureWidth:number,textureHeight:number):egret.Texture
为 SpriteSheet 上的指定区域创建一个新的 Texture 对象并缓存它
dispose():void
释放纹理
getTexture(name:string):egret.Texture
根据指定纹理名称获取一个缓存的 Texture 对象

属性详细信息

方法详细信息

SpriteSheet()

public SpriteSheet(texture:egret.Texture)

创建一个 egret.SpriteSheet 对象

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数

createTexture()

public createTexture(name:string,bitmapX:number,bitmapY:number,bitmapWidth:number,bitmapHeight:number,offsetX:number,offsetY:number,textureWidth:number, textureHeight:number):egret.Texture

为 SpriteSheet 上的指定区域创建一个新的 Texture 对象并缓存它

  • 支持版本:Egret 2.4

  • 运行平台:Web,Native

  • 参数

    • name:string - 缓存这个 Texture 对象所使用的名称,如果名称已存在,将会覆盖之前的 Texture 对象
    • bitmapX:number - 纹理区域在 bitmapData 上的起始坐标x
    • bitmapY:number - 纹理区域在 bitmapData 上的起始坐标y
    • bitmapWidth:number - 纹理区域在 bitmapData 上的宽度
    • bitmapHeight:number - 纹理区域在 bitmapData 上的高度
    • offsetX:number - 原始位图的非透明区域 x 起始点
    • offsetY:number - 原始位图的非透明区域 y 起始点
    • textureWidth:number - 原始位图的高度,若不传入,则使用 bitmapWidth 的值。
    • textureHeight:number - 原始位图的宽度,若不传入,则使用 bitmapHeight 的值。
  • 返回:创建的 Texture 对象

dispose()

public dispose():void

释放纹理

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

getTexture()

public getTexture(name:string):egret.Texture

根据指定纹理名称获取一个缓存的 Texture 对象

  • 支持版本:Egret 2.4

  • 运行平台:Web,Native

  • 参数

    • name:string - 缓存这个 Texture 对象所使用的名称
  • 返回:Texture 对象

示例


/*
* 以下示例演示了使用 SpriteSheet 处理合并后的大图。
* 可以配合 RES 模块进行加载,RES模块封装了对 SpriteSheet 的使用。
*/
class SpriteSheetExample extends egret.DisplayObjectContainer {
public constructor() {
super();
this.startLoad();
}
private startLoad():void {
//创建 ImageLoader 对象
var loader:egret.ImageLoader = new egret.ImageLoader();
//添加加载完成侦听
loader.addEventListener(egret.Event.COMPLETE, this.onLoadComplete, this);
var url:string = "resource/assets/egret_icon.png";
//开始加载
loader.load(url);
}
private onLoadComplete(event:egret.Event):void {
var loader:egret.ImageLoader = <egret.ImageLoader>event.target;
//获取加载到的纹理对象
var bitmapData:egret.BitmapData = loader.data;
//创建纹理对象
var texture = new egret.Texture();
texture.bitmapData = bitmapData;
//创建 SpriteSheet 对象
var spriteSheet:egret.SpriteSheet = new egret.SpriteSheet(texture);
egret.log(spriteSheet.getTexture("part1"));//null
//创建一个新的 Texture 对象
spriteSheet.createTexture("part1", 0, 0, 100, 100);
egret.log(spriteSheet.getTexture("part1"));//egret.Texture
}
}