Flash AS3: ENTER не обнаруживается, но CTRL + ENTER работает нормально - PullRequest
1 голос
/ 24 июня 2011

Когда мой фокус находится внутри поля ввода текста, нажатие CTRL+ENTER работает, но ENTER - нет.

Нажатие Enter, когда мой фокус находится где-либо, НО поле ввода текста работает просто отлично ..

Мое намерение состоит в том, чтобы определить, была ли нажата кнопка ENTER после того, как пользователь заполнил поле, но, похоже, она работает только для CTRL+ENTER

ActionScript 3 :

// works:
stage.addEventListener(KeyboardEvent.KEY_DOWN, enterHandler);

// ignored:
email.addEventListener(KeyboardEvent.KEY_DOWN, enterHandler);

function enterHandler(event:KeyboardEvent):void{
    if(event.keyCode == Keyboard.ENTER ){
        email.text = 'Thanks!';
    }
}

ENTER приводит к charCode == 0, тогда как CTRL+ENTER равно charCode == 13

email было создано с помощью инструмента «Текст» и для него установлено значение «Редактируемый»

Примечание : я тестирую в Chrome и Firefox под управлением Flash v10

1 Ответ

4 голосов
/ 24 июня 2011

Я предполагаю, что вы отлаживаете свою работу в ADL ( Управление> Тестировать ролик> в Flash Professional )? проблема заключается в том, что сочетания клавиш имеют приоритет над событиями клавиатуры, а клавиша ввода - это сочетание клавиш для Control> Play в меню Control во время тестирования фильма.

однако можно и очень легко отключить сочетания клавиш во время тестирования фильма. во время воспроизведения фильма перейдите на Управление> Отключить сочетания клавиш . теперь ваше клавиатурное событие для клавиши ввода будет выполняться правильно.


[EDIT]

о, и вы должны использовать event.keyCode вместо event.charCode.

[РЕДАКТИРОВАТЬ # 2]

хорошо, если вы хотите, чтобы событие ввода с клавиатуры запускалось, когда вы находитесь внутри вводимого TextField, вам просто нужно добавить прослушиватель TextEvent в TextField:

import flash.events.TextEvent;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFieldType;

var tf:TextField = new TextField();
tf.border = true;
tf.multiline = true; //Must be set to true for the textField to accept enter key
tf.type = TextFieldType.INPUT;
tf.width = 200;
tf.height = 20;

tf.addEventListener(TextEvent.TEXT_INPUT, keyboardReturnHandler);       

function keyboardReturnHandler(evt:TextEvent):void
    {
    if  (evt.text == "\n")
        {
        evt.preventDefault();
        trace("text field enter");
        }
    }

addChild(tf);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...