外部からLoadした画像の処理

外部から読込んだ画像をそのまま
拡大・縮小・回転をした場合
カクカクのきったない表示になってしまいます。

この対処法として、読込んだ画像はそのまま使わず
BitmapDataにdrowしスムーシングをかければ
オブジェクトを拡大・縮小・回転してもきれいに表示されるというものです。

※ソースはas2.0です

import flash.display.BitmapData;

var my_mcl:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();
my_mcl.addListener(myListener);

/*
ステージ上でボタンを配置している為、震度を0に指定
*/
var mcItem:MovieClip = createEmptyMovieClip("Item", 0);
my_mcl.loadClip("img/mario.png",mcItem);

myListener.onLoadInit = function(targetMc:MovieClip):Void {
if (targetMc._name == "Item")
{
var mcDisplay:MovieClip = createEmptyMovieClip("Display", getNextHighestDepth());
bitmapSmoothing(targetMc,mcDisplay);
btnAction(mcDisplay);
}
};

function bitmapSmoothing(loader:MovieClip, holder:MovieClip):Void {
var bd:BitmapData = new BitmapData(loader._width, loader._height, true, 0×00000000);
bd.draw(loader);
holder.attachBitmap(bd,0,"auto",true);
holder._x = Stage.width * 0.5 - loader._width * 0.5;
holder._y = 50;
loader.removeMovieClip();
}
//ボタンは直接ステージ上に置いたものをつかってます
function btnAction(targetMc:MovieClip):Void {
btn1.onPress = function():Void {
targetMc._xscale += 10;
targetMc._yscale += 10;
};
btn2.onPress = function():Void {
targetMc._xscale -= 10;
targetMc._yscale -= 10;
};
btn3.onPress = function():Void {
targetMc._rotation -= 15;
};
}

参照サイト にゃあプロジェクト - ウェブログ - 画像のスムージング設定 (2)

Tags: ,

Leave a Reply