Я хочу поймать нажатие клавиши Enter, когда пользователь заполняет входное текстовое поле в AS3. Я думаю, что должен сделать что-то вроде этого:
inputText.addEventListener(Event. ? , func);
function func(e:Event):void{
if(e. ? == "Enter"){
doSomething();
}
}
Но я не могу найти лучший способ сделать это. Между прочим, входной текст имеет ограничение:
inputText.restrict = "0-9";
Я должен добавить клавишу Enter к ограничениям?
inputText.restrict = "0-9\n";
Заранее спасибо.
Исправленный ответ
Вы можете легко отслеживать события клавиатуры, возникающие, когда текстовое поле находится в фокусе.
Просто добавьте событие KEY_DOWN прямо в текстовое поле и делайте все, что хотите.
// get key presses only when the textfield is being edited
inputText.addEventListener(KeyboardEvent.KEY_DOWN,handler);
function handler(event:KeyboardEvent){
// if the key is ENTER
if(event.charCode == 13){
// your code here
doSomething();
}
}
В отдельном примечании, текстовые поля также отправляют другие полезные события:
Предыдущий неправильный ответ:
Я думаю, что единственный способ сделать то, что вы хотите, немного сложен.
По сути, вы не можете получить какое-либо событие из обычного TextField, которое сработало бы при нажатии клавиши Enter. Вам нужно обойтись ...
Одна из идей - прослушивать текстовое поле для событий фокуса. Когда он находится в фокусе, вы добавляете слушателя в сцену для событий клавиатуры и проверяете, нажата ли клавиша Enter, если да, запускайте свое действие, иначе пропустите.
Пример кода:
inputText.addEventListener(FocusEvent.FOCUS_IN,textInputHandler);
inputText.addEventListener(FocusEvent.FOCUS_OUT,textInputHandlerOut);
function textInputHandler(event:FocusEvent):void {
//our textfield has focus, we want to listen for keyboard events.
stage.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function textInputHandlerOut(event:FocusEvent):void {
//our textfield lost focus, remove our listener.
stage.removeEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}
function keyDownHandler( e:KeyboardEvent ):void{
//a key was pressed, check if it was Enter => charCode 13.
if( e.charCode == 13 ){
//ok, enter was pressed. Do your thing.
trace("We pressed enter, doSomething" )
}
}
имя модуля не является типом.
Список
в List.map
и пусть (a: List < int >) = [1; 2; 3]
различаются.
Первый List
- имя модуля, второй - тип.
Я смог заставить злой глаз уйти, просто добавив этот маленький заголовок к сайту в IFrame (PHP решение):
header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');
Не забудьте нажать ctrl + F5 , чтобы перезагрузить ваш сайт или Explorer все еще может показать злой глаз, несмотря на то, что он работает нормально. Это, вероятно, главная причина, почему у меня было так много проблем, чтобы получить его на работу.
Файл политики вообще не требовался.
Изменить: Я нашел хорошую запись в блоге, которая объясняет проблему с куки в IFrames. Он также имеет быстрое исправление в коде C #: Кадры, страницы ASPX и отклоненные файлы cookie
-121--1811477-Используется ли текстовое поле или TextInput?
TextInput отправляет событие Enter при нажатии клавиши Enter. Подробнее об этом можно узнать по адресу http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/controls/TextInput.html#event: введите
Я не уверен, как это работает для текстового поля.