Flash / Flex / ActionScript/Development/Focus Event
Содержание
Focus and Tab Events
<source lang="java">
package{
import flash.display.*; import flash.events.*; public class Main extends Sprite { public function Main() { var spr:Sprite = new Sprite(); var sprTwo:Sprite = new Sprite(); spr.graphics.beginFill(0x00ff00, 1); spr.graphics.drawRect(0, 0, 100, 100); spr.graphics.endFill(); sprTwo.graphics.beginFill(0x0000ff, 1); sprTwo.graphics.drawRect(0, 0, 100, 100); sprTwo.graphics.endFill(); var btnOne:SimpleButton = new SimpleButton(spr, spr, spr, spr); var btnTwo:SimpleButton = new SimpleButton(sprTwo, sprTwo, sprTwo, sprTwo); addChild(btnOne); addChild(btnTwo); sprTwo.x = 300; btnOne.addEventListener(MouseEvent.MOUSE_OVER, focusMe); btnTwo.addEventListener(MouseEvent.MOUSE_OVER, focusMe); btnOne.addEventListener(FocusEvent.FOCUS_IN, fin); btnOne.addEventListener(FocusEvent.FOCUS_OUT, fout); btnTwo.addEventListener(FocusEvent.FOCUS_IN, fin); btnTwo.addEventListener(FocusEvent.FOCUS_OUT, fout); } private function fin(focusEvent:FocusEvent):void { trace(" focus in "+focusEvent.target+" related object "+focusEvent.relatedObject); } private function fout(focusEvent:FocusEvent):void { trace(" focus out "+focusEvent.target+" related object"+focusEvent.relatedObject); } private function focusMe(mouseEvent:MouseEvent):void { trace("stage focus "); stage.focus = (mouseEvent.target as InteractiveObject); } }
}
</source>
FocusEvent.KEY_FOCUS_CHANGE
<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>
FocusEvent.MOUSE_FOCUS_CHANGE
<source lang="java">
package {
import flash.display.Sprite; import flash.text.TextField; import flash.events.FocusEvent; public class Main extends Sprite { public function Main() { var tf1:TextField = new TextField(); tf1.type = "input"; tf1.height = 20; tf1.width = 100; tf1.border = true; addChild(tf1); tf1.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, checkFocus); var tf2:TextField = new TextField(); tf2.type = "input"; tf2.height = 20; tf2.width = 100; tf2.border = true; addChild(tf2); tf2.x = 200; } private function checkFocus(focusEvent:FocusEvent):void { if ((focusEvent.target as TextField).text == "") { focusEvent.preventDefault(); } } }
}
</source>
focusIn and focusOut Events
<source lang="java">
package{
import flash.text.TextField; import flash.events.*; import flash.display.Sprite; public class FocusIn extends Sprite{ var primaryText:TextField; var secondaryText:TextField; public function FocusIn(){ primaryText = new TextField(); secondaryText = new TextField(); primaryText.text = "This is the primary TextField."; secondaryText.text = "This is the secondary TextField"; primaryText.addEventListener(FocusEvent.FOCUS_IN, setFocus); secondaryText.addEventListener(FocusEvent.FOCUS_IN, setFocus); primaryText.addEventListener(FocusEvent.FOCUS_OUT, loseFocus); secondaryText.addEventListener(FocusEvent.FOCUS_OUT, loseFocus); primaryText.background = true; secondaryText.background = true; primaryText.backgroundColor = 0xFFFFFF; secondaryText.backgroundColor = 0xFFFFFF; addChild(this.primaryText); addChild(this.secondaryText); secondaryText.x = 500; } private function setFocus(focus:FocusEvent):void { (focus.target as TextField).backgroundColor = 0xFF0000; } private function loseFocus(focus:FocusEvent):void { (focus.target as TextField).backgroundColor = 0xFFFFFF; } }
}
</source>
Handling focus events for a particular object
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends Sprite { private var namefield:TextField = new TextField( ); private var passfield:TextField = new TextField( ); public function Main ( ) { namefield.width = 100; namefield.height = 30; namefield.border = true; namefield.background = true; namefield.type = TextFieldType.INPUT; passfield.width = 100; passfield.height = 30; passfield.y = 50; passfield.border = true; passfield.background = true; passfield.type = TextFieldType.INPUT; addChild(namefield); addChild(passfield); namefield.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, focusChangeListener); namefield.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, focusChangeListener); } private function focusChangeListener (e:FocusEvent):void { if (e.target == namefield && namefield.text.length < 3) { trace("Name entered is less than three characters long"); e.preventDefault( ); } } }
}
</source>
Handling focus events globally
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.text.*; public class Main extends Sprite { public function Main ( ) { var field1:TextField = new TextField( ); field1.width = 100; field1.height = 30; field1.border = true; field1.background = true; field1.type = TextFieldType.INPUT; var field2:TextField = new TextField( ); field2.width = 100; field2.height = 30; field2.y = 50; field2.border = true; field2.background = true; field2.type = TextFieldType.INPUT; addChild(field1); addChild(field2); stage.addEventListener(FocusEvent.FOCUS_IN, focusInListener); } private function focusInListener (e:FocusEvent):void { TextField(e.target).backgroundColor = 0xFF00FF00; if (e.relatedObject is TextField) { TextField(e.relatedObject).backgroundColor = 0xFFFFFFFF; } } }
}
</source>