あまり意味のない情報だけど数時間ハマったのメモしとく。
まず結論から書くと、これはムービープレビューのときのみ発生(FlashCS4で確認)
ムービープレビューのときに立ち上がるFlashPlayerはブラウザに埋め込まれてるプレイヤーとは異なるもの。
まれにおかしな挙動をすることがあるのだけど、今回もその類のバグだったわけ。
なので、実際にブラウザ上で確認すれば題記のような現象にはならない。
一応再現手順を書いておく。
1.flaファイルに日本語フォントを埋め込む。(小塚ゴシックProBとする)
2.ASにて、動的にTextFieldを配置(フォントサイズを16とかに)
3.TextFieldに埋め込んだフォントを設定
4.stage.qualityをMedium以下に設定
5.TextFieldの3Dプロパティを変更(z=0とか)
6.ctrl+enterでムービープレビュー
7.指定したフォントサイズよりもでかく表示される
※stage.quailtyをHIGH以上にすれば上記現象はおきません。
まぁ実害はないけど遭遇したら一瞬焦るので一応覚えておいたほうがいいかも。
Tags: AS3, Flash, FlashPlayer10
CS4のデフォルト書き出しはFP10です。
FP9まではダイナミックテキストにアルファ処理はフォント埋め込まないと無理でしたが、FP10からはフォント埋め込まなくてできるみたい。
//FP10用
var tf:TextField = new TextField();
tf.text = "TEST";
addChild(tf);
tf.alpha = 0.1;
FP9での書き出しでは聞きません。
FP9の場合(フォント埋め込み後)
//FP9用
var tfm:TextFormat = new TextFormat();
tfm.font="HGSMinchoE";
var tf:TextField = new TextField();
tf.embedFonts=true;
tf.defaultTextFormat=tfm;
tf.text="あいうえお";
addChild(tf);
tf.alpha = 0.1
フォントの埋め込みはライブラリに埋め込んでないとだめみたいです。
ググるとtipsがたくさんありましたが、意外とはまったので書いときます。
ライブラリの右上のオプションボタンから「新しいフォント…」を選択
好きなフォントを選びます。
上の例では、HGS明朝Eをえらんでます。
リンケージのActionScript用に書き出しにチェック。
このときクラス名はなんでもいいです。(空手バカとかでもOK)
この埋め込んだフォントをASでどう設定するかというところで悩みました。
具体的には↓で設定してるのですが、
tfm.font="HGSMinchoE";
で、”HGSMinchoE”はなんぞや、という感じですが、これがHGS明朝Eのこと。
ボクはここを↓のようにやっていてできませんでした。
//だめな例
tfm.font="HGS明朝E";
ではHGS明朝E→HGSMinchoE、これをどうしらべるかですが。
trick7さんのとこの記事に調べ方がありました。
AS3 フォントリスト取得&確認用コード
これでライブラリ上で埋め込んであるフォントの名前がわかりました。
※2010/06/26追記
フォント名は文字列ではなく、FontクラスのfontNameプロパティを参照した方が安全。
//フォントにリンケージで指定したクラス名がMyFontだった場合
var myFont:Font = new MyFont();
var tfm:TextFormate = new TextFormat();
tfm.font = myFont.fontName;//これでフォント名が指定できる
Tags: AS3, Flash, FlashPlayer10