画像のスムージング設定 (2)

画像のスムージング設定をしてみた。外部画像を読み込んで回転してみる。 :bouzu:

:caution: 要 Flash Player 8 以上

_root に、ムービークリップ(インスタンス名: base_mc) を配置。
base_mc には、空のムービークリップ(インスタンス名: photo) を配置。
# base_mc の基準点は中央にあり、photo は base_mc の(-120, -90) に配置。

_root 第1フレームに
var imgLoader:MovieClipLoader = new MovieClipLoader();
var imgListener:Object = new Object();
imgListener.onLoadInit = function(target_mc:MovieClip):Void {
  var _mc:MovieClip = target_mc._parent;
  _mc.onRelease = function():Void {
    (中略)
  };
};
imgLoader.addListener(imgListener);
imgLoader.loadClip("cat.jpg", base_mc.photo);
と記述。
This movie requires Flash Player 9.0.0

すると、左側の画像では、ギザギザがあぁ。 :cry:
# Flash Player 7 書き出しでは、このようなことは起きない。

そこで、右側の画像のプロパティパネルを開いて…。って、できないじゃーん。 :cry:

そうだ!スクリプトでビットマップスムージングを! :cake:

_root 第1フレームに
import flash.display.BitmapData;

var imgLoader:MovieClipLoader = new MovieClipLoader();
var imgListener:Object = new Object();
imgListener.onLoadInit = function(target_mc:MovieClip):Void {
  var _mc:MovieClip = target_mc._parent;
  bitmapSmoothing(target_mc, _mc.photo);
  _mc.onRelease = function():Void {
    (中略)
  };
};
imgLoader.addListener(imgListener);
base_mc.createEmptyMovieClip("loader", 1);
base_mc.loader._x = -120;
base_mc.loader._y = -90;
imgLoader.loadClip("cat.jpg", base_mc.loader);

function bitmapSmoothing(loader:MovieClip, holder:MovieClip):Void {
  var _bd:BitmapData = new BitmapData(loader._width, loader._height, true);
  _bd.draw(loader);
  holder.attachBitmap(_bd, 0, "auto", true);
  loader.removeMovieClip();
}
と記述。

スムージングがかかってるよー。 :doki:


実は、Flash Player 8 では、アルファチャンネルつきPNGも読み込める。 :boy:
This movie requires Flash Player 9.0.0

がっ!しかし!このまま(左側)では、透過しない。 :-o

_root 第1フレームに
  (中略)
imgLoader.loadClip("frog.png", base_mc.loader);

function bitmapSmoothing(loader:MovieClip, holder:MovieClip):Void {
  var _bd:BitmapData = new BitmapData(loader._width, loader._height, true, 0x00000000);
  _bd.draw(loader);
  holder.attachBitmap(_bd, 0, "auto", true);
  loader.removeMovieClip();
}
と記述。(右側)

これで、どうだー。 :boy: