0

外部 SWF にベクター スプライトがあります。それらをスターリング画像にうまく描画できます。しかし、事前にスプライトをスケーリングしようとすると、結果の画像がスケーリングされずにトリミングされてしまいます。

これはスターリングの外では普通のスプライトで問題なく動作しますが、私はスターリングを初めて使用するので、基本的なものが欠けていると確信しています。どんな助けでも大歓迎です。ありがとう!

FlashDevelop + AIR + スターリング

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();
        }
    }
}

ゲームとして

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);
        }
    }
}

編集: bitmapdata.draw にスケール マトリックスを追加することで回避策を見つけました。しかし、スケーリングがそれなしでクロッピングに変換される理由はまだわかりません。

4

1 に答える 1

1

最後のプロジェクトで同様の問題を覚えていると思います。この解決策を試してください:

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