Help with a 'Key.' problem

I’m aware of the Key.isDown and Key.isToggled commands, but neither are really what I need.

This is what I’m trying to do:

  1. Arrows are displayed from left to right in a specific order.
  2. An arrow key on the keyboard is pressed.
  3. The arrow that was pressed dissapears.
  4. The user must now continue down the line of arrows and press them in the displayed order untill they have all dissapeared. (If the user hits the wrong arrow, the original arrows will re-appear again and they will have to start over.)

The problem:
Using this actionscript on all four arrows…

ARROW 1 IN LINE
onClipEvent (enterFrame) {
if (_root.tal == 0) {
if (Key.isDown(Key.DOWN)) {
gotoAndPlay(2);
_root.tal = 1;
}
if (Key.isDown(Key.UP) || Key.isDown(Key.RIGHT) || Key.isDown(Key.LEFT)) {
_root.tal = 0;
}
}
}

ARROW 2 IN LINE
onClipEvent (enterFrame) {
if (_root.tal == 0) {
gotoAndStop(1);
}
if (_root.tal == 1) {
if (Key.isDown(Key.LEFT)) {
gotoAndPlay(2);
_root.tal += 1;
}
if (Key.isDown(Key.UP) || Key.isDown(Key.DOWN) || Key.isDown(Key.RIGHT)) {
_root.tal = 0;
}
}
}

ARROW 3 IN LINE
onClipEvent (enterFrame) {
if (_root.tal == 0) {
gotoAndStop(1);
}
if (_root.tal == 2) {
if (Key.isDown(Key.RIGHT)) {
gotoAndPlay(2);
_root.tal += 1;
}
if (Key.isDown(Key.UP) || Key.isDown(Key.DOWN) || Key.isDown(Key.LEFT)) {
_root.tal = 0;
}
}
}

ETC.

the problem is when a key is already being held down and the next key is inputed (which is usually required because all the keys must be inputed quickly) it doesn’t work because the code that says “if any key other than what the current arrow is is down, then go back to the start”. What I need is a form of code like “if the key is pressed” rather than “if the key is down”.