Keyboard Events (triggered when a key from the keyboard is pressed) are detected with the KeyboardEvent object.
The KeyboardEvent comes in two types:
KEY_DOWN - dispatched when the user has pressed a key.
KEY_UP - dispatched when the user has released a key..
KeyboardEvent has 6 properties:
charCode - contains the character code value of the key pressed or released.
- For example: for 'a' the code value is 97, for 'A' it's 65, for '3' it's 51, and for 'Shift+3' (meaning '#') it's 35.
keyCode - contains a number with the code value of the key pressed or released. The difference from "charCode" is that "charCode" returns the 0 value for the keys that do not represent a character (Shift, Ctrl, the arrows, ...), but "keyCode" contains a specific number for these keys too.
- For example: for 'Shift' it returns the number 16, for right arrow key it returns the number 31.
keyLocation - contains a number that indicates the location of the key pressed or released. Used for keys that appear multiple times on the keyboard, such as: Shift, Alt.
altKey - indicates true if the 'Alt' key is active, or false if it is inactive
ctrlKey - indicates true if the 'Ctrl' key is active, or false if it is inactive.
shiftKey - indicates true if the 'Shift' is active, or false if it is inactive.
- The code values for "charCode" and "keyCode" are dependent on the operating system and keyboard being used. The examples here are for Windows.
- To detect in a Flash presentation which key is pressed, apply the addEventListener() method (with KeyboardEvent) to Stage (to the stage object).
Here's an example with "KeyboardEvent" and KEY_DOWN, in which the "keyCode" property is used.
We create a Flash presentation with a rectangle (or what shape you want) that can be moved with the arrow keys. Also, it uses the "shiftKey" property to modify the motion speed when the Shift key is pressed.
- Follow this steps:
Open a new Flash document, ActionScript 3.0, and draw a rectangle (or what shape you want) on the Stage.
Select the shape on the Stage and convert it into MovieClip (from Modify -> Convert to Symbol, and for Type choose Movie Clip, and press OK).
Then, open the Properties panel, and add the instance name rectangle for this MovieClip object (in the box with "<Instance Name>").
Right-click on Frame 1 in the Timeline, choose Actions, then in the "Actions panel" add the following code:
// Register a KeyboardEvent, applied to the "stage" object, to detect when a key is pressed
// addEventListener is applied to the 'stage' object, to be active in all the presentation
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveF);
// Function called by the registered event
function moveF(key_evt:KeyboardEvent):void
{
// define a variable with a value that depends on "shiftKey" (used to set the motion speed)
var vi:int = key_evt.shiftKey ? 12 : 2;
// define a "switch" instruction with values and instructions for arrow keys
// uses the code valuess for the arrow keys: Left, Right, Down, Up
switch (key_evt.keyCode)
{
case 37:
rectangle.x -= vi;
break;
case 39:
rectangle.x += vi;
break;
case 38:
rectangle.y -= vi;
break;
case 40:
rectangle.y += vi;
break;
default:
break;
}
}
Press Ctrl+Enter to test the result. The following Flash presentation will appear:
- When you press the arrows keys, the rectangle will move in the direction indicated by each arrow (first click on the presentation).
- If you hold the Shift key pressed, the motion speed will increase.
- The expression "var vi:int = key_evt.shiftKey ? 12 : 2;" defines the value of 12 if "key_evt.shiftKey" is TRUE (when Shift is pressed) or 2 if it's FALSE (Shift is not pressed).
- The "switch" instruction modifies the 'x' and 'y' values for the "rectangle" instance (X and Y distance), with the value of the "vi" variable, depending on the arrow key you press (a "case" for each arrow key).
• To find out the code for each key, you can use the following ActionScript code:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyC);
function keyC(key:KeyboardEvent):void { trace(key.keyCode); }
// Displays in the Output panel the code value of the key pressed
To download the FLA file with this example, click: Keyboard events.