2010年9月28日火曜日

AS3でスムージング設定済みのBitmapにBitmapDataを再設定するとスムージング設定が消えるらしい

AS3で画像にスムージングをかけて表示するには、Bitmap.smoothingを使えばいい。

例えばこんな感じだ。

function getSmoothBitmap(bmpd:BitmapData):Bitmap {
  var bmp:Bitmap = new Bitmap(bmpd, "auto", true);
  return bmp;
}

このようにしてスムージング設定をしたBitmapに、次のようにしてBitmapDataをセットする。

function setBitmapData(bmp:Bitmap, bmpd:BitmapData):void {
  bmp.smoothing = true;
  trace("setBitmapData() bmpdセット前 bmp.smoothing=" + bmp.smoothing);
  bmp.bitmapData = bmpd;
  trace("setBitmapData() bmpdセット後 bmp.smoothing=" + bmp.smoothing);
}

するとトレースは、bmpdセット前ではsmoothingはtrueで、bmpdセット後ではsmoothingはfalseとなる。

つまり、スムージング設定済みのBitmapにBitmapDataをセットすると、スムージングが自動的にOFFになるらしい。知らんやった・・・

そこで、BitmapDataをセットした後にもスムージングを維持するには、セットした直後にsmoothing = trueと再設定する。まんどくさい。