AS2 で奇妙な動作が発生し、createTextField() を使用してステージに追加された textField でフォントを使用していることに気付きました。これは、元々 Year と表示されていた textField 用です。ユーザーは年を入力し、[OK] をクリックして年を受け入れると、textField は Year の表示に戻ります。これは常に Arial などの sans serif フォントである必要があります (確かにこれは難しいことではありません!)。
これが私が達成したいことです-
1) ユーザーが textField をクリックすると、「Year」という単語がクリアされ、点滅するカーソルがテキストを入力できることを示します。2) ユーザーが [OK] をクリックすると (提供された年が 4 桁の数字である場合)、textField は "Year" (Arial で) と言う状態に戻ります。
私のコード -
this.createTextField("uiYear", 99, 0, 0, 65, 20);
uiYear.type = "input";
uiYear.antiAliasType="advanced";
uiYear.restrict = "0-9";
//
var my_fmt:TextFormat = new TextFormat();
my_fmt.font = "Arial";
my_fmt.size = 12;
my_fmt.align = "left";
//
uiYear.embedFonts = true;
uiYear.setTextFormat(my_fmt);
uiYear.text = "Year";
//
uiYear.onSetFocus = function() {
if(uiYear.text == "Year") {
uiYear.text = "";
}
}
//
button_ok.onRelease = function() {
uiYear.text = "Year";
}
大丈夫そうですよね?
私が気づいているのはこれです -
textField をクリックすると、「Year」という単語は消えますが、点滅するカーソルは表示されず、textField にテキストを入力できません。行を削除すると -
uiYear.embedFonts = true;
...その後、問題なく動作し、「Year」という単語が消え、textField をクリックすると、textField に数値を入力できます。そのため、フォントを埋め込むと、onSetFocus 関数がトリガーされた後に textField にフォーカスが設定されないように見えます。ただし、入力したテキストはArialではありません。[OK]ボタンをクリックして「Year」という単語を置き換えると、Timesなどのセリフフォントになります。私はそれをしたくありません!
同様に、自分のライブラリからフォントを埋め込もうとする場合 - たとえば、自分のライブラリに新しいフォントがあり、リンケージ識別子 year_font を使用して actionscript にエクスポートし、my_fmt.font=my_font を変更して、リンケージ ダイアログで [Export for actionscript] をクリックします。次に、textField をクリックすると、Year という単語が消えますが、textField は編集できません。
onSetFocus が問題を引き起こしていることを受け入れ、埋め込みフォントを維持することで見た目がはるかに良くなった場合、より多くの可能性があります-
- textField をクリックすると、単語を削除する onSetFocus 関数を削除したため、予想どおり、「年」という単語の後にカーソルが表示されます。そのため、バックスペースを 4 回押して「年」を削除すると、何らかの理由でカーソルが消えてテキストを入力できなくなります。これは、ローカルでテストする場合には発生せず、公開してブラウザーで実行する場合にのみ問題になることに注意してください。
- ただし、「年」という単語を強調表示してから入力を開始すると、数字を入力できます。ボタンを押すと、年という単語が正しいフォントで表示されます。奇妙なことに、上記の 1 の動作はもう発生しません。delete を押して year という単語を削除すると、カーソルが残ったままになり、もう一度入力できます。番号 1 は初回のみ発生するようです。
何か案は?
ありがとう