Проблема при использовании Flash AS2 вместе embedFonts = true AND textField.onSetFocus()

Я заметил странное поведение с AS2 и использование шрифтов в textField, который добавляется на сцену с помощью createTextField(). Это для textField, в котором изначально указано Year - и пользователь может ввести год, нажать "ОК", и год будет принят, затем textField вернется к слову "Year". Я хочу, чтобы это всегда был шрифт без засечек, такой как Arial (конечно, это не может быть трудным!)

Вот чего я хочу достичь -

1) Когда пользователь нажимает на textField, слово "Год" очищается, и мигающий курсор указывает на возможность ввода текста. 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";
}

Выглядит хорошо, верно?

Что я замечаю, так это

Когда я нажимаю на текстовое поле, слово "год" исчезает, но мигающий курсор не отображается, и я не могу ввести текст в текстовое поле. Если я уберу строку -

uiYear.embedFonts = true;

... тогда все работает нормально, слово "год" исчезает, и я могу ввести число в textField, когда я нажимаю textField. Таким образом, встраивание шрифтов, по-видимому, не позволяет установить фокус на textField после запуска функции onSetFocus. Однако текст, который я сейчас ввожу, не Arial, когда я нажимаю кнопку "ОК" и слово "год" заменяется, оно пишется шрифтом с засечками, например, Times или что-то в этом роде. Я не хочу этого!

Точно так же, если я пытаюсь внедрить шрифт из моей библиотеки - например, у меня есть новый шрифт в моей библиотеке, который я экспортирую в actionScript с идентификатором связи year_font, изменяю my_fmt.font = my_font и нажимаю "Export for actionscript" в диалоге связи. Затем, когда я щелкаю текстовое поле, слово "год" исчезает, но текстовое поле редактировать невозможно.

Если я просто согласен с тем, что onSetFocus вызывает проблему, и продолжу сохранять встроенные шрифты, что выглядит намного лучше, у меня больше проб -

  1. Если я нажму на textField, курсор появится после слова "Год", как я и ожидал, потому что я удалил функцию onSetFocus, которая удаляет слово. Поэтому, если я удаляю "Год" нажатием клавиши Backspace 4 раза, курсор по какой-то причине исчезает, и я не могу ввести текст. Обратите внимание, что это не происходит при локальном тестировании, а является проблемой только при публикации и запуске в браузере.
  2. Однако, если я выделю слово "Год", то начну печатать, я смогу набрать цифры в порядке, и если я нажму кнопку "ОК", слово "год" будет отображаться правильным шрифтом. Странно, что теперь поведение в номере 1 больше не происходит - если я нажимаю "удалить", чтобы удалить слово "год", курсор остается, и я могу печатать снова. Номер 1 кажется только в первый раз.

Есть идеи?

Спасибо

1 ответ

Я не могу ответить на ваш полный запрос, но я слишком испытал TextField, который убивает себя, когда вы нажимаете клавишу Backspace, и НЕ убивает себя, если вы помечаете текст / делаете вещи по-другому.

Это должно быть ошибкой, так как мы решили ее, изменив целевого игрока с FP8 на FP9. Это было для баннера, и, естественно, мы производим их с наименьшим общим знаменателем, но на этот раз мы отказались от этого в пользу того, что действительно работает!:)

Другие вопросы по тегам