Bitmap.smoothingをtrueにするタイミング

| コメント(0) | トラックバック(0)
Bitmap.smoothingをtrueにするタイミングを間違えると、正常にスムーズ処理がかかってくれないことがあります。

そもそもBitmap.smoothingとは、Bitmapの表示サイズが変化したとき(width、height、scaleX、scaleYなどが変化したとき)発生するジャギーを軽減するための処理「アンチエイリアス」を有効にするかどうかのブール値です。
このプロパティはデフォルトではfalse(アンチエイリアスをかけない設定)になっています。これは、アンチエイリアスにかかる描画コストを抑えるためにそのようになっています。(つまりこれをやりすぎると動きがカクカクになってしまいます。)

Bitmap.smoothingの値は、Bitmap.bitmapDataが更新されたとき自動的にfalseに変わります。つまり、はじめにtrueにしたつもりでも後でfalseに変わってしまうことがあるので注意が必要です。BitmapDataがどこかのタイミングで変わることがある場合、smoothingプロパティを変更するタイミングは常に意識する必要があります。

var bitmap:Bitmap = new Bitmap();
bitmap.smoothing = true;//bitmapDataがセットされる前に設定しているので、無意味な指定
stage.addChild(bitmap);

var loader:Loader = new Loader();
loader.load("image.jpg");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(event:Event):void
{
	loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, arguments.cally);
	bitmap.bitmapData = Bitmap(loader.content).bitmapData;//この瞬間、bitmap.smoothingはfalseに変わる
});

とここで、smoothingの値はtrueなのになぜかアンチエイリアスが効かないということで困ったことはありませんか?一番ありがちなのが(というか私自身ハマってしまったことですが)、大きい画像を縮小表示したときなどです。

この場合、Stage.qualityの値をStageQuality.BESTに設定する必要があります。デフォルトではStageQuality.HIGHになっているので、明示的に最高品質までクオリティを高くすることで意図した結果がでるようになります。

stage.quality = StageQuality.BEST;

トラックバック(0)

トラックバックURL: http://www.zerosugar.net/cgi/mt/mt-tb.cgi/10

コメントする

アイテム

  • eclipseのビルド・パス設定
  • cap_11120403.jpg
  • cap_11120402.jpg
  • cap_11120401.jpg
  • stone.jpg
  • road.jpg
  • jazzfrog.jpg
  • cap100425.jpg
  • img100424.jpg
  • Paprika_render_001.jpg

ウェブページ

このブログ記事について

このページは、shimanebitoが2010年2月10日 01:16に書いたブログ記事です。

ひとつ前のブログ記事は「Servletがインスタンスを共有する理由」です。

次のブログ記事は「そろそろ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。