2010-01-08 5 views
3

У меня есть входной TextField и на слушателе есть KeyboardEvent.KEY_DOWN, который прослушивает событие Keyboard.ENTER. Слушатель событий добавляет введенный текст в массив или что-то еще, а затем очищает TextField. Проблема заключается в том, что при срабатывании события Enter key и для значения TextField значение «", оно оставляет возврат каретки в TextField и курсор, расположенный во второй строке. WTF? Я кодировал AS2 и AS3 в течение долгого времени и никогда не сталкивался с этим раньше. Я теряю рассудок? Пожалуйста, помогите, люди! :-)AS3 TextField - возврат нежелательной каретки при установке значения в значение ""

Пример:

var myTextArray:Array = new Array(); 
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); 

function onKeyDown(e:KeyboardEvent):void{ 
    if(e.keyCode == Keyboard.ENTER){ 
     if(_inputText.text != null){ 
      myTextArray.push(_inputText.text); 
    } 
    _inputText.text = ""; 
    } 
} 

ответ

0

Если вы можете ввести возврат каретки, это означает, что TextField является многострочным, не?

Вы пытались очистить свой вводный текст в функции обратного вызова прослушивателя событий KeyboardEvent.KEY_UP?

0

Вы хотите ввести текстовое поле в фокусе? В этом случае может быть вызвано, что onKeyDown вызывается до того, как значение текстового поля будет обновлено действием клавиатуры. Вы устанавливаете текстовое поле для пустой строки в onKeyDown, а затем flash добавляет к ней новую строку.

Добавить текстовое событие прослушивателя событий в текстовое поле и добавить инструкции трассировки к обоим обработчикам событий, чтобы знать порядок событий.

0

Если вы находитесь в режиме разработки Flash (в среде IDE), вам необходимо снять флажок Control -> Disable Keyboard Shortcuts во время тестирования. Также попробуйте сделать обработчик очистки для KEY_UP.

0
inputfield.addEventListener(Event.CHANGE, onChange); 

private function onChange(e:Event):void { 
if (inputfield.text.charCodeAt(inputfield.text.length - 1) == 13) { 
inputfield.text = inputfield.text.substr(0, inputfield.text.length - 1); 
} 
} 
-1

Это, кажется, какая-то ошибка - я тоже получаю ее. Если вы просто установите textField.text = "" в свой конструктор (или где-нибудь), он, похоже, решит проблему.

1

Просто замените KEY_DOWN на KEY_UP. Он исправляет проблему (для меня по крайней мере)

1

Используйте Key_Down -> Ваш код -> Key_Up -> Пустое поле

Пример (противный код):

Message.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void 
        { 
         if(e.keyCode == Keyboard.ENTER) 
         { 
          // Your code... 
         } 
        }); 
Message.addEventListener(KeyboardEvent.KEY_UP, function(e:KeyboardEvent):void 
         { 
          if(e.keyCode == Keyboard.ENTER) 
          { 
           Message.text = ""; 
          } 
         }); 
0

Я знаю, что это очень старый вопрос, все еще думал поделиться своим решением. Я отключил многострочную функцию текстового поля в файле fla. После этого я не получаю возврат каретки в текстовое поле.

 Смежные вопросы

  • Нет связанных вопросов^_^