2011年10月13日木曜日

flashでz座標を設定したら画質がわるくなったときの対応

bmpObject.z=0;

のように写真や写真内包オブジェクトにz座標を設定すると、画質がボケたようになってしまう(デフォルトのまま(つまり0)であっても発生)。
どうやら設定しただけでスムージングが自動的に行われるらしい

試してわかった対処法は二つ

1.stageの描画品質を落とす
stage.quality = StageQuality.LOW;
と設定すると、スムージングが行われなくなり、ボケが回避される。
ただこの設定はstage全体に適用されるため、対象とする写真や他の写真(または内包displayObject)全ての座標を整数(つまりx=1.5とかはダメ)にする必要がある。
こんな感じ
bmp.x=Math.floor(bmp.x);

2.対象のdisplayObjectに新規作成matrixを適用する。
bmp.transform.matrix=new Matrix(1 , 0 , 0 , 1 , bmp.x , bmp.y);
なぜだかわからないが一応治る。z座標設定がクリアされるのかも。

今回は1の方法を用い、かつシーンに応じてStageQuality.LOWと、StageQuality.MIDEUMを切り替えて設定する。
なおTweenの終了時点でStageQualityを切り替えると目立つのでクリック時点か、もっと前に切り替えておく必要がある。