diff --git a/spine-starling/spine-starling-example/lib/spine-starling.swc b/spine-starling/spine-starling-example/lib/spine-starling.swc index db3fb77ab..01dd51a7c 100644 Binary files a/spine-starling/spine-starling-example/lib/spine-starling.swc and b/spine-starling/spine-starling-example/lib/spine-starling.swc differ diff --git a/spine-starling/spine-starling/src/spine/starling/StarlingTextureLoader.as b/spine-starling/spine-starling/src/spine/starling/StarlingTextureLoader.as index 1364150b0..5bc08cc01 100644 --- a/spine-starling/spine-starling/src/spine/starling/StarlingTextureLoader.as +++ b/spine-starling/spine-starling/src/spine/starling/StarlingTextureLoader.as @@ -40,41 +40,55 @@ import flash.display.Bitmap; import flash.display.BitmapData; public class StarlingTextureLoader implements TextureLoader { - public var bitmapDatas:Object = {}; - public var singleBitmapData:BitmapData; + public var bitmapDatasOrTextures:Object = {}; + public var singleBitmapDataOrTexture:Object; - /** @param bitmaps A Bitmap or BitmapData for an atlas that has only one page, or for a multi page atlas an object where the - * key is the image path and the value is the Bitmap or BitmapData. */ - public function StarlingTextureLoader (bitmaps:Object) { - if (bitmaps is BitmapData) { - singleBitmapData = BitmapData(bitmaps); + /** @param bitmaps A Bitmap or BitmapData or Texture for an atlas that has only one page, or for a multi page atlas an object where the + * key is the image path and the value is the Bitmap or BitmapData or Texture. */ + public function StarlingTextureLoader (bitmapsOrTextures:Object) { + if (bitmapsOrTextures is BitmapData) { + singleBitmapDataOrTexture = BitmapData(bitmapsOrTextures); return; } - if (bitmaps is Bitmap) { - singleBitmapData = Bitmap(bitmaps).bitmapData; + if (bitmapsOrTextures is Bitmap) { + singleBitmapDataOrTexture = Bitmap(bitmapsOrTextures).bitmapData; return; } + if (bitmapsOrTextures is Texture) { + singleBitmapDataOrTexture = Texture(bitmapsOrTextures); + return; + } - for (var path:* in bitmaps) { - var object:* = bitmaps[path]; - var bitmapData:BitmapData; + for (var path:* in bitmapsOrTextures) { + var object:* = bitmapsOrTextures[path]; + var bitmapDataOrTexture:Object; if (object is BitmapData) - bitmapData = BitmapData(object); + bitmapDataOrTexture = BitmapData(object); else if (object is Bitmap) - bitmapData = Bitmap(object).bitmapData; + bitmapDataOrTexture = Bitmap(object).bitmapData; + else if (object is Texture) + bitmapDataOrTexture = Texture(object); else - throw new ArgumentError("Object for path \"" + path + "\" must be a Bitmap or BitmapData: " + object); - bitmapDatas[path] = bitmapData; + throw new ArgumentError("Object for path \"" + path + "\" must be a Bitmap, BitmapData or Texture: " + object); + bitmapDatasOrTextures[path] = bitmapDataOrTexture; } } public function loadPage (page:AtlasPage, path:String) : void { - var bitmapData:BitmapData = singleBitmapData || bitmapDatas[path]; - if (!bitmapData) - throw new ArgumentError("BitmapData not found with name: " + path); - page.rendererObject = Texture.fromBitmapData(bitmapData); - page.width = bitmapData.width; - page.height = bitmapData.height; + var bitmapDataOrTexture:Object = singleBitmapDataOrTexture || bitmapDatasOrTextures[path]; + if (!bitmapDataOrTexture) + throw new ArgumentError("BitmapData/Texture not found with name: " + path); + if (bitmapDataOrTexture is BitmapData) { + var bitmapData:BitmapData = BitmapData(bitmapDataOrTexture); + page.rendererObject = Texture.fromBitmapData(bitmapData); + page.width = bitmapData.width; + page.height = bitmapData.height; + } else { + var texture:Texture = Texture(bitmapDataOrTexture); + page.rendererObject = texture; + page.width = texture.width; + page.height = texture.height; + } } public function loadRegion (region:AtlasRegion) : void {