AS3でデバイスフォントにアンチエイリアス

デバイスフォントにアンチエイリアスをかけるほうほうのまとめ。あとちょっと愚痴。
0
smw @Shi_MeiWo

長文ツイート。Flashでダイナミックテキストを使うときは、フォントが決定していなくてはならない。その方法は・フォント埋め込み・デバイスフォントの2つ。でも日本語は世界で最も文字種の多い表記なので、フォントを埋めこむとメガバイトをあっさり超えてしまう。

2011-04-22 13:15:18
smw @Shi_MeiWo

というわけでデバイスフォントが最有力候補だが、これにはアンチエイリアスがかからないという弱点がある。それでもあえてアンチエイリアスをかけたいときは、いちど画像にして、画像加工の形で得なければならない。次に、その方法を示す。

2011-04-22 13:17:12
smw @Shi_MeiWo

1.テキストフィールド(TF)を実際の数倍のサイズで生成 2.TFに文字を適用しビットマップデータ(BMD)にdraw 3.BMDにぼかしフィルタ適用 4.表示用の新規BMDを実際のサイズで生成 5.新規BMDに、大きなBMDをMatrix縮小しdrawして完成

2011-04-22 13:21:56
smw @Shi_MeiWo

なお、drawは遅い処理になるので、BMDを得るときには、某PC用ゲームの「少女祈祷中・・・」みたいなタイミングで予め生成しておくことが望ましい。もちろんBMDはメモリを逼迫するので、使わなくなった時点でdespose()を走らせて捨てること。

2011-04-22 13:24:26
smw @Shi_MeiWo

しっかし、AS3のスクリプトも、MCベースとBMDベースではかなりコードスタイルがかわるなぁ。正直、BMDは座標指定とかが扱いにくい。半透明も、拡大縮小も、フィルタも、draw()メソッドで一度新規BMDを生成しなくては表示できない。mcなら直接いじれるのに。

2011-04-22 16:35:26
smw @Shi_MeiWo

今はゲーム作ってるから60fpsを目指しているのでBMDベースでコードしているが、正直普通のムービーなら12fpsでも充分と思っているので、簡単なMC(つーかSprite)のほうがオススメ。楽なコードってのは出来上がりが早くデバッグしやすいって意味なので、選ぶ理由としては充分。

2011-04-22 16:39:05