2009-10-09 2 views
3

Как определить, нажата ли клавиша удаления с помощью ActionScript?Как определить, нажата ли клавиша удаления в ActionScript 3?

addEventListener(KeyboardEvent.KEY_UP, onKeyUp); 

... 

function onKeyUp(event:KeyboardEvent):void 
{ 
    trace(event.keyCode); 
} 

Приведенный выше код не дает значения, когда нажаты кнопки удаления, возврата, ввода и других команд. Однако клавиши со стрелками do значения выходов.

ответ

8
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed); 
.... 

function onKeyPressed(event:KeyboardEvent):void 
{ 
    if (event.keyCode==Keyboard.DELETE) { 
     ..... 
     } 

} 

это хорошо ... работаю Но если вы тестируете фильм с Flash, он не будет работать, так что экспорт швейцарских франков и тест ....

+0

Интересно. Я думаю, потому что симулятор работает внутри FLASH-IDE, сама IDE перехватывает команды удаления. – Soviut

2

Просто угадывая, что вы используете событие TEXT_INPUT, это не работает для удаления и возврата. Чтобы поймать их, вы можете добавить eventListener на сцену и послушать KeyboardEvent.

+0

Нет, я слушаю события на сцене. Обновлен фрагмент кода, чтобы отразить это. – Soviut

+0

Вы должны написать stage.addEventListener (KeyboardEvent.KEY_DOWN, eventKeyDown) хотя (этап. *!), Даже если вы находитесь в области класса документа. Работает для меня ... –

1

Код будет работать нормально, если объект отображения, который вы подключили слушателя, находится в фокусе. Для глобального прослушивания, как сказал Тео, вам нужно подключить слушателя к stage. Доступ к stage из объекта, который еще не добавлен в список отображения, приведет к ошибке null. Сделайте это в обработчике событий ADDED_TO_STAGE безопасным.

+0

Так в чем же дело Soviut? Просто любопытно ... –

1

Старый нить, но если кто-то получает это далеко : в Flash Player внутри IDE эти клавиши связаны с ярлыками. Когда вы тестируете свой фильм, выберите «Управление»> «Отключить быстрые клавиши» в проигрывателе, и вы вернете события.