WaldeMar1321, все события с устройств ввода делятся на 2 части - это начало и конец.
Например, событие клавиатуры KeyboardEvent.KEY_DOWN - это событие начала нажатия, а
KeyboardEvent.KEY_UP - это отпускание клавиши. То, что при длительном нажатии клавиши он
посылает событие многократно - неправильно с точки зрения логики, но с этим ничего не сделаешь.
MouseEvent.MOUSE_DOWN же работает исключительно правильно с точки зрения логики, он отсылается один раз при нажатии левой кнопки мыши, и соответствующее событие ловится при отпускании -
MouseEvent.MOUSE_UP.
Представьте, какие трудности ждали бы программиста, если бы всё работало не так.
Нужно, допустим, при нажатии на кнопку у клипа запустить анимацию, а при отпускании мыши - останавливать.
Пишем

Код AS3:
var clip:MovieClip = new MovieClip();//допустим, это наш клип.
var button:Button = new Button(); //допустим, это наша кнопка.
button.addEventListener(MouseEvent.MOUSE_DOWN, function(e:Event):void
{
clip.gotoAndPlay(1);
});
button.addEventListener(MouseEvent.MOUSE_UP, function(e:Event):void
{
clip.gotoAndStop(1);
});
Тут всё будет работать как надо, но что если бы вместо этого MOUSE_DOWN посылал бы событие каждый кадр? Ничего бы не работало.
Логика этих событий такова, что есть MOUSE_DOWN - начало нажатия, и есть MOUSE_UP - конец нажатия, и всё, что между ними можно делать в обработчике ENTER_FRAME.
Есть TouchEvent.TOUCH_BEGIN, а есть TouchEvent.TOUCH_END, что вызывается при нажатии на экран на сенсорном экране, и при отжатии.
Есть KeyboardEvent.KEY_DOWN, а есть KeyboardEvent.KEY_UP.