我注意到 AS2 的一些奇怪行为,并在使用 createTextField() 添加到舞台的 textField 中使用字体。这是针对最初显示年份的文本字段 - 用户可以输入年份,单击确定并接受年份,然后文本字段恢复为年份。我希望它始终是一种无衬线字体,例如 Arial(这肯定不难!)
这是我想要实现的 -
1) 当用户点击 textField 时,“Year”字样被清除,光标闪烁表示可以输入文本。2)当用户单击确定(并且提供的年份是一个四位数)时,文本字段会返回说“年份”(在 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";
}
看起来不错吧?
我注意到的是——
当我单击文本字段时,“年份”一词消失了,但闪烁的光标不显示,我无法在文本字段中输入文本。如果我删除该行 -
uiYear.embedFonts = true;
...然后一切正常,“年份”一词消失了,当我单击 textField 时,我可以在 textField 中输入数字。因此,嵌入字体似乎可以防止在触发 onSetFocus 函数后将焦点设置在 textField 上。但是,我现在输入的文本不是 Arial,当我单击确定按钮并替换“年份”一词时,它是衬线字体 - 例如 Times 或其他字体。我不想要那个!
同样,如果我尝试从我的库中嵌入字体 - 例如,我的库中有一个新字体,我使用链接标识符 year_font 导出到 actionscript 并更改 my_fmt.font=my_font 并在链接对话框中单击 Export for actionscript。然后,当我单击 textField 时,Year 这个词消失了,但 textField 无法编辑。
如果我只是接受 onSetFocus 导致问题并继续保持看起来更好的嵌入字体我有更多的问题 -
- 如果我点击 textField 光标现在出现在单词“Year”之后,正如我所期望的那样,因为我已经删除了删除单词的 onSetFocus 函数。因此,如果我通过按退格键 4 次来删除“年份”,那么由于某种原因光标消失了,我无法输入文本。请注意,在本地测试时不会发生这种情况,而只是在浏览器中发布和运行时才会出现问题。
- 但是,如果我突出显示“年份”这个词,然后开始输入,我就可以输入数字了,如果我按下按钮,那么“年份”这个词就会以正确的字体显示。奇怪的是,上面数字 1 中的行为不再发生 - 如果我按 delete 删除单词 year 光标停留,我可以再次输入。数字 1 似乎只是第一次发生。
有任何想法吗?
谢谢