0

ユーザーが画像を読み込んで編集できるアプリケーションを作成しました。問題は、画像を初めてロードするときに、元のピクセルサイズでロードされることです。しかし、別の画像をロードすると、ピクセルサイズが元の画像と異なります。

画像をステージにロードしたときの機能コードは次のとおりです。

function onFileLoadComplete(event:Event):void
        {
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
            loader.loadBytes(loadFileRef.data);

            loadFileRef = null;
        }

        function onDataLoadComplete(event:Event):void
        {
            var bitmapData:BitmapData = Bitmap(event.target.content).bitmapData;

            var matrix:Matrix = new Matrix();
            matrix.translate(-imageView_mc.x, -imageView_mc.y);
            matrix.scale(scaleX, scaleY);
            matrix.translate(imageView_mc.x, imageView_mc.y);

            imageView_mc.graphics.clear();
            imageView_mc.graphics.beginBitmapFill(bitmapData, matrix, false, true); 
            imageView_mc.graphics.drawRect(0, 0, bitmapData.width, bitmapData.height);
            imageView_mc.graphics.endFill();

            trace ("Image width: " ,imageView_mc.width, ", Image height: " ,imageView_mc.height);


            imageView_mc.width = stage.stageWidth;
            imageView_mc.height = stage.stageHeight;
            (imageView_mc.scaleX < imageView_mc.scaleY) ? imageView_mc.scaleY = imageView_mc.scaleX : imageView_mc.scaleX = imageView_mc.scaleY;
            (imageView_mc.scaleX > imageView_mc.scaleY) ? imageView_mc.scaleY = imageView_mc.scaleX : imageView_mc.scaleX = imageView_mc.scaleY;
            imageView_mc.x = 0.5*(stage.stageWidth-imageView_mc.width);
            imageView_mc.y = 0.5*(stage.stageHeight-imageView_mc.height);
}

それで、このコードに何か問題がありますか?このコードは、画像をステージにロードし、ステージサイズに比例して拡大縮小するためのものです。フィードバックをいただければ幸いです。

4

1 に答える 1

0

行列変換を適用する前に、新しい画像を読み込んだときにスケールをリセットします。

scaleX = scaleY = 1;
于 2013-01-16T21:22:13.560 に答える