0

I've got vector sprites in an external SWF. I can draw them onto a Starling image just fine. But when I try to scale the sprite before hand, the resulting image has been cropped instead of scaled.

This works fine outside of starling with plain sprites, but I'm new to Starling so I'm sure I'm missing something basic. Any help would be appreciated. Thanks!

FlashDevelop + AIR + Starling

Main.as

package 
{
    import flash.display.Sprite;
    import starling.core.Starling;

    public class Main extends Sprite 
    {
        private var starling:Starling;

        public function Main():void 
        {
            starling = new Starling(Game, stage);
            starling.start();
        }
    }
}

Game.as

package  
{
    import flash.display.BitmapData;
    import starling.display.Image;
    import starling.display.Sprite;
    import starling.textures.Texture;

    public class Game extends Sprite
    {
        [Embed(source = "../assets/Sprites.swf", symbol = "Sprites_Tiger")]
        private var Sprites_Tiger:Class;
        public var Tiger:flash.display.Sprite = new Sprites_Tiger();

        public function Game() 
        {
            Tiger.width = 256;
            Tiger.height = 256;

            var bitmapdata:BitmapData = new BitmapData(Tiger.width, Tiger.height);
            bitmapdata.draw(Tiger);

            var texture:Texture = Texture.fromBitmapData(bitmapdata);
            var image:Image = new Image(texture);

            addChild(image);
        }
    }
}

EDIT: I found a work-around by adding a scale matrix to the bitmapdata.draw. But I still don't know why the scaling is converted to cropping without it.

4

1 回答 1

1

我想我记得我上一个项目中的类似问题,试试这个解决方案:

  bitmapdata.draw(Tiger, Tiger.transform.matrix);
于 2013-05-20T11:16:11.837 回答