カテゴリー
Develop

空のテキスト入力フィールドにembedFontsをすると・・・

icon_flash8.jpgテキストフィールドにテキストが入力できないんだけど、そんな仕様だったっけ??
なんかフォーカス自体がして割り当てられない感じなのだけど、初めて遭遇。
いやー原因がさっぱりわからなくて猛烈にはまった・・・。
入力フィールドにEmbedFonts使うなってことですか?ごふぅ。
とりあえずprototype使って強制的に解決したけど、なんか釈然としないなぁ・・。
原因を
空の入力textFieldにembedFontsを適応し、textFormatを当てると、textFieldが消失。
(embedFontsしなければなし、また何かしらの文字があらかじめ入っていれば問題なし)


****
追記・・・
検証してみたのだけど、フォントを定着させるにはフォーカスがあるタイミングでなにかしらの文字が入った状態でテキストフォーマットとを適応する必要があるっぽい。簡単に

TextField.prototype.osaka9 = function() {
this.embedFonts = true;
var my_fmt:TextFormat = new TextFormat();
my_fmt.font = “_Osaka9”;
my_fmt.size = 9;
if (!this.text) {
this.text = “ ”;
}
Selection.setFocus(this);
this.setTextFormat(my_fmt);
Selection.setFocus();
if (this.text == “ ”) {
this.text = “”;
}
};

として解決したが、モー少しいい方法があるとは思う。ちなみにonChangeのタイミングで適応させると文字が連続して入力できなくなる。ちと今更prototypeもどうかと思うので、もう少し考えてみることにする。
正直なところonChangeとかonKillFocusでからのフィールド内要素の変更をキャッチできればいいのだけど、なんかいい方法ないかなああ?
TextField.text自体をして、スルーさせるとか?
うーん・・どうかなあ
*****
そういえば「TextField クラスや、Math、Key、Mouse などの静的クラスを拡張することはできません。」というのがあるので、TextFieldの拡張はやっぱprototypeを使うしかないかな・・。
からは拡張できそうな予感がしているけど詳しくはわからないな・・。
ただ一個問題があってmacのだと一度入力後、他のフィールドで日本語が入力できなくなる。なんかこれfirefoxについているgoogke検索のフィールドを一度触ると再度入力できるようになるらしいのだけど、この辺はというよりもfirefoxのバグ、もしくはfirefoxのpluginのバグのような気がしている・・。一度SWFからフォーカスを消失させればいいということなのだろうか?
なぞだなぁ・・。
ちと参考サイト
静的(static)クラスの拡張
AS 2 and extending TextField class
Macromedia Flash非公式テクニカルノート 2. クラスの使用 - シンプルな例

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です