0

我注意到 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 导致问题并继续保持看起来更好的嵌入字体我有更多的问题 -

  1. 如果我点击 textField 光标现在出现在单词“Year”之后,正如我所期望的那样,因为我已经删除了删除单词的 onSetFocus 函数。因此,如果我通过按退格键 4 次来删除“年份”,那么由于某种原因光标消失了,我无法输入文本。请注意,在本地测试时不会发生这种情况,而只是在浏览器中发布和运行时才会出现问题。
  2. 但是,如果我突出显示“年份”这个词,然后开始输入,我就可以输入数字了,如果我按下按钮,那么“年份”这个词就会以正确的字体显示。奇怪的是,上面数字 1 中的行为不再发生 - 如果我按 delete 删除单词 year 光标停留,我可以再次输入。数字 1 似​​乎只是第一次发生。

有任何想法吗?

谢谢

4

1 回答 1

1

我无法回答您的完整请求,但我也经历过 TextField 在您按退格键时会自行杀死,并且如果您标记文本/以不同方式执行操作,则不会自行杀死。

这一定是一个错误,因为我们通过将目标播放器从 FP8 更改为 FP9 来解决它。这是一个横幅,自然我们用最小的公分母来制作它们,但这次我们放弃了它,转而支持一些真正有效的东西!:)

于 2011-04-26T11:05:47.400 回答