Руководство по actionscript. часть 4, стр. 071
Следовательно, чтобы реагировать на клавиатурный ввод, направленный в конкретный объект, мы регистрируем приемники в этом объекте. Это демонстрирует листинг 22.10, в котором показано приложение, создающее два объекта Sprite — recti и rect2. Когда фокус установлен на объекте recti и пользователь нажимает любую клавишу, приложение перемещает обьект recti вправо. Когда фокус установлен на объекте rect2 и пользователь нажимает любую клавишу, приложение вращает объект г ect 2.
Листинг 22.10. Обработка событий клавиатуры для конкретного объекта
package { import flash. display.*; import flash. events.*;
public class ObjectKeyboardSensor extends Sprite { public function ObjectKeyboardSensor ( ) { // Создаем прямоугольники var recti:Sprite = new Sprite( ); recti. graphi cs.1i neSty1e(1); recti. graphics. beginFill(OxOOOOFF); rectt. graphics. drawRect(0. 0, 75, 75); recti. tabEnabled = true;
var rect2:Sprite = new Sprite( ); rect2.graphi cs.1i neSty1e(1);
rect2.graphics. beginFill(OxOOOOFF); rect2.graphics. drawRect(0, 0, 75, 75); rect2.x = 200; rect2.tabEnabled = true;
// Добавляем прямоугольники в список отображения
addChild(rectl);
addChild(rect2);
// Регистрируем приемники в прямоугольниках для событий клавиатуры recti. addEventLi stener(KeyboardEvent. KEYJDOWN, rectlKeyDownLi stener); rect2.addEventLi stener(KeyboardEvent. KEYJDOWN, rect2KeyDownLi stener);
}
// Выполняется, когда фокус установлен на объекте recti и пользователь // нажимает любую клавишу
private function rectlKeyDownListener (e:KeyboardEvent):void { Sprite(e. target).x += 10;
}
// Выполняется, когда фокус установлен на объекте rect2 и пользователь // нажимает любую клавишу
private function rect2KeyDownListener (e:KeyboardEvent)-.void { Sprite(e. target).rotation += 10;
}
}
}
Теперь, когда мы знаем, как определить момент нажатия или отпускания клавиши пользователем, выясним, как можно определить, какая клавиша была нажата или отпущена.