[AS2]Flashで外部から読み込んだ画像データにスムージングを適用する

Flashで外部から画像データを読み込んで、リサイズしたり回転させたりして使用する場合、シャギーが出てギザギザが目立ってしまう。Flash Player7だと、何もしなくてもスムージングがかかった状態で表示されていたみたいで、問題なかったのだけど、8以上だとギザギザになってしまう。いろいろ調べてみたら、Flash Player8から仕様が変更になったらしく、ひと手間かけないとスムージングが適用できない模様。よく使いそうなのでメモ。

flaファイルと同じ階層に「photo.jpg」を用意して、メインのタイムラインの1フレーム目に、下記スクリプトを記述すれば、外部画像にスムージングを適用可能(AS2です)。

import flash.display.BitmapData;

this.createEmptyMovieClip("containerOriginal", this.getNextHighestDepth());
this.createEmptyMovieClip("containerSmoothing", this.getNextHighestDepth());

var listenerObj:Object = new Object();
listenerObj.onLoadInit = function(){
	bitmapSmoothing();
}
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(listenerObj);
mcl.loadClip("photo.jpg", this.containerOriginal);

function bitmapSmoothing() {
	var smoothImage:BitmapData = new BitmapData(this.containerOriginal._width, this.containerOriginal._height, true, 0x000000);
	smoothImage.draw(this.containerOriginal);
	this.containerSmoothing.attachBitmap(smoothImage, 0, "auto", true);
	this.containerOriginal.removeMovieClip();
}

画像を読み込んで、読み込みが完了したら、BitmapDataに変換してスムージングを適用して元画像をリムーブという流れ。元画像の読み込みが完全に完了してから、スムージング処理をしないと、うまく動作しないみたいなので注意。このスクリプトの場合、onLoadInitでロード完了を取得して、bitmapSmoothing関数でスムージングを適用してます。

元画像をリムーブしないで、角度をつけて比較してみるとこんな感じ(左がスムージング適用前で、右がスムージング適用後)。

ライブラリから読み込む場合は、プロパティからスムージングの適用を選択できるので問題はないけど、スクリプトベースで外部から引っ張ってくる場合は、こんな感じで解決するみたいです。もっと簡単な方法とかあるのかもしれないけど、とりあえずこの方法で解決しました。

【参考にさせて頂いたサイト】
AS2で読み込んだ外部画像にスムージングを適用する
FLASH8-ビットマップスムージングをスクリプトで制御したい

[AS2]Flashで外部から読み込んだ画像データにスムージングを適用する」への1件のフィードバック

  1. ピンバック: romeoBlog

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax