Flash / Flex / ActionScript/Development/KeyboardEvent
Содержание
- 1 Converting user input to uppercase
- 2 Determining the Character Associated with a Key
- 3 Handling keyboard events for a particular object
- 4 Handling keyboard events globally
- 5 KeyboardEvent Basics
- 6 Listen for the keyDown event and traces out the character code for that key.
- 7 Multilocation keys
- 8 Reference key code with Keyboard.ESCAPE
- 9 Retrieving a pressed key"s key code through KeyboardEvent.KEY_DOWN event
- 10 Understanding keyCodes
- 11 Up / Left Sensor
Converting user input to uppercase
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends Sprite { private var inputfield:TextField = new TextField( ); public function Main() { inputfield.text = ""; inputfield.width = 150; inputfield.height = 30; inputfield.border = true; inputfield.background = true; inputfield.type = TextFieldType.INPUT; addChild(inputfield); inputfield.addEventListener(TextEvent.TEXT_INPUT, textInputListener); } private function textInputListener (e:TextEvent):void { e.preventDefault( ); inputfield.replaceText(inputfield.caretIndex, inputfield.caretIndex, e.text.toUpperCase( )); var newCaretIndex:int = inputfield.caretIndex + e.text.length; inputfield.setSelection(newCaretIndex, newCaretIndex); } }
}
</source>
Determining the Character Associated with a Key
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.text.*; import flash.ui.*; public class Main extends Sprite { private var keyoutput:TextField = new TextField( ); public function Main() { keyoutput.text = "Press any key..."; keyoutput.autoSize = TextFieldAutoSize.LEFT; keyoutput.border = true; keyoutput.background = true; addChild(keyoutput); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); } private function keyDownListener (e:KeyboardEvent):void { keyoutput.text = "The key code for the key you pressed is: " + e.keyCode + "\n"; keyoutput.appendText("The character code for the key you pressed is: " + e.charCode + "\n"); keyoutput.appendText("The character for the key you pressed is: " + String.fromCharCode(e.charCode)); } }
}
</source>
Handling keyboard events for a particular object
<source lang="java">
package {
import flash.display.*; import flash.events.*; public class Main extends Sprite { public function Main( ) { var rect1:Sprite = new Sprite( ); rect1.graphics.lineStyle(1); rect1.graphics.beginFill(0x0000FF); rect1.graphics.drawRect(0, 0, 75, 75); rect1.tabEnabled = true; var rect2:Sprite = new Sprite( ); rect2.graphics.lineStyle(1); rect2.graphics.beginFill(0x0000FF); rect2.graphics.drawRect(0, 0, 75, 75); rect2.x = 200; rect2.tabEnabled = true; addChild(rect1); addChild(rect2); rect1.addEventListener(KeyboardEvent.KEY_DOWN, rect1KeyDownListener); rect2.addEventListener(KeyboardEvent.KEY_DOWN, rect2KeyDownListener); } private function rect1KeyDownListener (e:KeyboardEvent):void { Sprite(e.target).x += 10; } private function rect2KeyDownListener (e:KeyboardEvent):void { Sprite(e.target).rotation += 10; } }
}
</source>
Handling keyboard events globally
<source lang="java">
package {
import flash.display.*; import flash.events.*; public class Main extends Sprite { public function Main ( ) { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); } private function keyDownListener (e:KeyboardEvent):void { trace("A key was pressed."); } }
}
</source>
KeyboardEvent Basics
<source lang="java">
package {
import flash.display.Sprite; import flash.events.KeyboardEvent; public class Main extends Sprite { private var sprite:Sprite = new Sprite(); public function Main() { sprite.graphics.beginFill(0xFF0000, 1); sprite.graphics.drawRect(0, 0, 20, 20); sprite.graphics.endFill(); addChild(sprite); this.stage.addEventListener(KeyboardEvent.KEY_UP,moveSprite); } private function moveSprite(keyEvent:KeyboardEvent):void { switch (keyEvent.keyCode) { case 37: sprite.x--; break; case 38: sprite.y--; break; case 39: sprite.x++ break; case 40: sprite.y++; break; default: break; } } }
}
</source>
Listen for the keyDown event and traces out the character code for that key.
<source lang="java">
package {
import flash.display.Sprite; import flash.events.KeyboardEvent; public class Main extends Sprite { public function Main( ) { stage.focus = this; addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); } private function onKeyDown(event:KeyboardEvent):void { trace("key down: " + event.charCode); } }
}
</source>
Multilocation keys
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.ui.*; public class Main extends Sprite { public static const A_KEY:int = 65; public function Main() { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); } private function keyDownListener (e:KeyboardEvent):void { if (e.keyCode == Keyboard.SHIFT) { if (e.keyLocation == KeyLocation.LEFT) { trace("The left Shift key was pressed"); } else if (e.keyLocation == KeyLocation.RIGHT) { trace("The right Shift key was pressed"); } } } }
}
</source>
Reference key code with Keyboard.ESCAPE
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.text.*; import flash.ui.Keyboard; public class Main extends Sprite { private var keyoutput:TextField; public function Main() { keyoutput = new TextField( ); keyoutput.text = "Press any key..."; keyoutput.autoSize = TextFieldAutoSize.LEFT; keyoutput.border = true; keyoutput.background = true; addChild(keyoutput); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); }
private function keyDownListener (e:KeyboardEvent):void { if (e.keyCode == Keyboard.ESCAPE) { trace("The Escape key was pressed"); } } }
}
</source>
Retrieving a pressed key"s key code through KeyboardEvent.KEY_DOWN event
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends Sprite { private var keyoutput:TextField; public function Main() { keyoutput = new TextField(); keyoutput.text = "Press any key..."; keyoutput.autoSize = TextFieldAutoSize.LEFT; keyoutput.border = true; keyoutput.background = true; addChild(keyoutput); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); } private function keyDownListener (e:KeyboardEvent):void { keyoutput.text = "The key code for the key you pressed is: " + e.keyCode; } }
}
</source>
Understanding keyCodes
<source lang="java">
package {
import flash.display.Sprite; import flash.events.KeyboardEvent; public class Main extends Sprite { private var sprite:Sprite = new Sprite(); public function Main() { sprite.graphics.beginFill(0xFF0000, 1); sprite.graphics.drawRect(0, 0, 20, 20); sprite.graphics.endFill(); addChild(sprite); this.stage.addEventListener(KeyboardEvent.KEY_UP,moveSprite); } private function moveSprite(keyEvent:KeyboardEvent):void { switch (keyEvent.keyCode) { case 37: sprite.x--; break; case 38: sprite.y--; break; case 39: sprite.x++ break; case 40: sprite.y++; break; default: break; } } }
}
</source>
Up / Left Sensor
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.ui.*; public class Main extends Sprite { private var upPressed:Boolean; private var leftPressed:Boolean; public function Main ( ) { stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener); } private function keyDownListener (e:KeyboardEvent):void { if (e.keyCode == Keyboard.UP) { upPressed = true; } else if (e.keyCode == Keyboard.LEFT) { leftPressed = true; } if (upPressed && leftPressed) { trace("Up Arrow key and Left Arrow key are both pressed"); } } private function keyUpListener (e:KeyboardEvent):void { if (e.keyCode == Keyboard.UP) { upPressed = false; } else if (e.keyCode == Keyboard.LEFT) { leftPressed = false; } } }
}
</source>