使用Flash AS2 embedFonts = true和textField.onSetFocus()时出现问题

时间:2011-03-16 16:38:59

标签: textfield actionscript-2 embedded-fonts adobe-flash-cs3

我注意到AS2的一些奇怪行为,并使用createTextField()添加到舞台的textField中使用字体。这是一个textField,最初是年份 - 用户可以输入一年,单击确定,年份被接受,然后textField恢复为年份。我希望这总是一个无衬线字体,比如Arial(当然这很难!)

这是我想要实现的目标 -

1)当用户点击textField时,将清除单词“Year”,闪烁的光标表示可以输入文本。 2)当用户点击确定(并且提供的年份是四位数字)时,textField会返回说“年”(在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,当我点击确定按钮并替换单词“Year”时,它是一个serif字体 - 比如Times或者什么。我不想要那个!

同样地,如果我尝试从我的库中嵌入一个字体 - 例如我在我的库中有一个新的Font,我用链接标识符year_font导出到actionscript并更改my_fmt.font = my_font并单击Export for actionscript in the linkage对话。然后当我单击textField时,单词Year消失但textField无法编辑。

如果我只是接受onSetFocus导致问题并继续保持嵌入字体看起来好多了我有更多的probs -

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

    感谢

1 个答案:

答案 0 :(得分:1)

我无法回答您的完整请求,但是我太经验过TextField,当您按下退格键时会自动杀死它,并且如果您标记文本/执行不同的操作,则不会自行终止。

这必须是一个错误,因为我们通过将目标玩家从FP8改为FP9来解决它。这是一个横幅,我们自然而然地用最小的共同点来制作它们,但是这次我们放弃了它,有利于拥有真正有用的东西! :)