Проблема при одновременном использовании Flash AS2 embedFonts = true AND textField.onSetFocus () - PullRequest
0 голосов
/ 16 марта 2011

Я заметил странное поведение с 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 и нажимаю «Экспорт для actionScript» в связи диалог. Затем, когда я щелкаю текстовое поле, слово «год» исчезает, но текстовое поле редактировать невозможно.

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

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

Есть идеи?

спасибо

1 Ответ

1 голос
/ 26 апреля 2011

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

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

...