flash.events
public class FocusEvent
继承FocusEvent Inheritance Event Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

用户将焦点从显示列表中的一个对象更改到另一个对象时,对象将调度 FocusEvent 对象。有四种类型的焦点事件:

查看示例



公共属性
 属性定义方
 Inheritedbubbles : Boolean
[只读 (read-only)] 指示事件是否为冒泡事件。
Event
 Inheritedcancelable : Boolean
[只读 (read-only)] 指示是否可以阻止与事件相关联的行为。
Event
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
 InheritedcurrentTarget : Object
[只读 (read-only)] 当前正在使用某个事件侦听器处理 Event 对象的对象。
Event
  AIR-only direction : String
指定 focusIn 事件的焦点方向。
FocusEvent
 InheritedeventPhase : uint
[只读 (read-only)] 事件流中的当前阶段。
Event
  isRelatedObjectInaccessible : Boolean
如果为 true,则 relatedObject 属性是出于与安全沙箱相关的原因而设置为 null 的。
FocusEvent
  keyCode : uint
被按下以触发 keyFocusChange 事件的键的键控代码值。
FocusEvent
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  relatedObject : InteractiveObject
对补充 InteractiveObject 实例的引用,焦点变化会对此实例造成影响。
FocusEvent
  shiftKey : Boolean
指出是否激活了 Shift 功能键,若激活则值为 true。
FocusEvent
 Inheritedtarget : Object
[只读 (read-only)] 事件目标。
Event
 Inheritedtype : String
[只读 (read-only)] 事件的类型。
Event
公共方法
 方法定义方
  
FocusEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = false, relatedObject:InteractiveObject = null, shiftKey:Boolean = false, keyCode:uint = 0, direction:String = "none")
创建一个 Event 对象,其中包含有关焦点事件的特定信息。
FocusEvent
  
创建 FocusEvent 对象的副本,并设置每个属性的值以匹配原始属性值。
FocusEvent
 Inherited
formatToString(className:String, ... arguments):String
用于在自定义 ActionScript 3.0 Event 类中实现 toString() 方法的实用程序函数。
Event
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
检查是否已对事件调用 preventDefault() 方法。
Event
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
如果可以取消事件的默认行为,则取消该行为。
Event
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。
Event
 Inherited
防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。
Event
  
返回一个字符串,其中包含 FocusEvent 对象的所有属性。
FocusEvent
 Inherited
返回指定对象的原始值。
Object
公共常量
 常量定义方
 InheritedACTIVATE : String = "activate"
[静态] ACTIVATE 常量定义 activate 事件对象的 type 属性的值。
Event
 InheritedADDED : String = "added"
[静态] Event.ADDED 常量定义 added 事件对象的 type 属性值。
Event
 InheritedADDED_TO_STAGE : String = "addedToStage"
[静态] Event.ADDED_TO_STAGE 常量定义 addedToStage 事件对象的 type 属性值。
Event
 InheritedCANCEL : String = "cancel"
[静态] Event.CANCEL 常量定义 cancel 事件对象的 type 属性的值。
Event
 InheritedCHANGE : String = "change"
[静态] Event.CHANGE 常量定义 change 事件对象的 type 属性值。
Event
 InheritedCLEAR : String = "clear"
[静态] Event.CLEAR 常量定义 clear 事件对象的 type 属性的值。
Event
 InheritedCLOSE : String = "close"
[静态] Event.CLOSE 常量定义 close 事件对象的 type 属性的值。
Event
 InheritedAIR-only CLOSING : String = "closing"
[静态] Event.CLOSING 常量定义 closing 事件对象的 type 属性值。
Event
 InheritedCOMPLETE : String = "complete"
[静态] Event.COMPLETE 常量定义 complete 事件对象的 type 属性值。
Event
 InheritedCONNECT : String = "connect"
[静态] Event.CONNECT 常量定义 connect 事件对象的 type 属性值。
Event
 InheritedCOPY : String = "copy"
[静态] 定义 copy 事件对象的 type 属性值。
Event
 InheritedCUT : String = "cut"
[静态] 定义 cut 事件对象的 type 属性值。
Event
 InheritedDEACTIVATE : String = "deactivate"
[静态] Event.DEACTIVATE 常量定义 deactivate 事件对象的 type 属性值。
Event
 InheritedDISPLAYING : String = "displaying"
[静态] Event.DISPLAYING 常量定义 displaying 事件对象的 type 属性值。
Event
 InheritedENTER_FRAME : String = "enterFrame"
[静态] Event.ENTER_FRAME 常量定义 enterFrame 事件对象的 type 属性值。
Event
 InheritedEXIT_FRAME : String = "exitFrame"
[静态] Event.EXIT_FRAME 常量定义 exitFrame 事件对象的 type 属性的值。
Event
 InheritedAIR-only EXITING : String = "exiting"
[静态] Event.EXITING 常量定义 exiting 事件对象的 type 属性值。
Event
  FOCUS_IN : String = "focusIn"
[静态] 定义 focusIn 事件对象的 type 属性值。
FocusEvent
  FOCUS_OUT : String = "focusOut"
[静态] 定义 focusOut 事件对象的 type 属性值。
FocusEvent
 InheritedFRAME_CONSTRUCTED : String = "frameConstructed"
[静态] Event.FRAME_CONSTRUCTED 常量定义 frameConstructed 事件对象的 type 属性的值。
Event
 InheritedFULLSCREEN : String = "fullScreen"
[静态] Event.FULL_SCREEN 常量定义 fullScreen 事件对象的 type 属性值。
Event
 InheritedAIR-only HTML_BOUNDS_CHANGE : String = "htmlBoundsChange"
[静态] Event.HTML_BOUNDS_CHANGE 常量定义 htmlBoundsChange 事件对象的 type 属性值。
Event
 InheritedAIR-only HTML_DOM_INITIALIZE : String = "htmlDOMInitialize"
[静态] Event.HTML_DOM_INITIALIZE 常量定义 htmlDOMInitialize 事件对象的 type 属性值。
Event
 InheritedAIR-only HTML_RENDER : String = "htmlRender"
[静态] Event.HTML_RENDER 常量定义 htmlRender 事件对象的 type 属性值。
Event
 InheritedID3 : String = "id3"
[静态] Event.ID3 常量定义 id3 事件对象的 type 属性值。
Event
 InheritedINIT : String = "init"
[静态] Event.INIT 常量定义 init 事件对象的 type 属性值。
Event
  KEY_FOCUS_CHANGE : String = "keyFocusChange"
[静态] 定义 keyFocusChange 事件对象的 type 属性值。
FocusEvent
 InheritedAIR-only LOCATION_CHANGE : String = "locationChange"
[静态] Event.LOCATION_CHANGE 常量定义 locationChange 事件对象的 type 属性值。
Event
  MOUSE_FOCUS_CHANGE : String = "mouseFocusChange"
[静态] 定义 mouseFocusChange 事件对象的 type 属性值。
FocusEvent
 InheritedMOUSE_LEAVE : String = "mouseLeave"
[静态] Event.MOUSE_LEAVE 常量定义 mouseLeave 事件对象的 type 属性值。
Event
 InheritedAIR-only NETWORK_CHANGE : String = "networkChange"
[静态] Event.NETWORK_CHANGE 常量定义 networkChange 事件对象的 type 属性值。
Event
 InheritedOPEN : String = "open"
[静态] Event.OPEN 常量用于定义 open 事件对象的 type 属性值。
Event
 InheritedPASTE : String = "paste"
[静态] Event.PASTE 常量定义 paste 事件对象的 type 属性的值。
Event
 InheritedREMOVED : String = "removed"
[静态] Event.REMOVED 常量定义 removed 事件对象的 type 属性值。
Event
 InheritedREMOVED_FROM_STAGE : String = "removedFromStage"
[静态] Event.REMOVED_FROM_STAGE 常量定义 removedFromStage 事件对象的 type 属性值。
Event
 InheritedRENDER : String = "render"
[静态] Event.RENDER 常量定义 render 事件对象的 type 属性的值。
Event
 InheritedRESIZE : String = "resize"
[静态] Event.RESIZE 常量定义 resize 事件对象的 type 属性的值。
Event
 InheritedSCROLL : String = "scroll"
[静态] Event.SCROLL 常量定义 scroll 事件对象的 type 属性值。
Event
 InheritedSELECT : String = "select"
[静态] Event.SELECT 常量定义 select 事件对象的 type 属性的值。
Event
 InheritedSELECT_ALL : String = "selectAll"
[静态] Event.SELECT_ALL 常量定义 selectAll 事件对象的 type 属性的值。
Event
 InheritedSOUND_COMPLETE : String = "soundComplete"
[静态] Event.SOUND_COMPLETE 常量定义 soundComplete 事件对象的 type 属性值。
Event
 InheritedTAB_CHILDREN_CHANGE : String = "tabChildrenChange"
[静态] Event.TAB_CHILDREN_CHANGE 常量定义 tabChildrenChange 事件对象的 type 属性值。
Event
 InheritedTAB_ENABLED_CHANGE : String = "tabEnabledChange"
[静态] Event.TAB_ENABLED_CHANGE 常量定义 tabEnabledChange 事件对象的 type 属性值。
Event
 InheritedTAB_INDEX_CHANGE : String = "tabIndexChange"
[静态] Event.TAB_INDEX_CHANGE 常量定义 tabIndexChange 事件对象的 type 属性值。
Event
 InheritedUNLOAD : String = "unload"
[静态] Event.UNLOAD 常量定义 unload 事件对象的 type 属性值。
Event
 InheritedAIR-only USER_IDLE : String = "userIdle"
[静态] Event.USER_IDLE 常量定义 userIdle 事件对象的 type 属性值。
Event
 InheritedAIR-only USER_PRESENT : String = "userPresent"
[静态] Event.USER_PRESENT 常量定义 userPresent 事件对象的 type 属性值。
Event
属性详细信息
AIR-only direction属性
direction:String  [读写]

运行时版本: AIR 1.0

指定 focusIn 事件的焦点方向。



实现
    public function get direction():String
    public function set direction(value:String):void

另请参见

isRelatedObjectInaccessible属性 
isRelatedObjectInaccessible:Boolean  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 10

如果为 true,则 relatedObject 属性是出于与安全沙箱相关的原因而设置为 null 的。如果 relatedObject 的标称值是对其他沙箱中的 DisplayObject 的引用,则 relatedObject 将设置为 null,除非具有双向跨越此沙箱边界的权限。通过以下方式确立权限:从 SWF 文件调用 Security.allowDomain();或者通过从图像文件的服务器提供策略文件,然后在加载图像时设置 LoaderContext.checkPolicyFile 属性。



实现
    public function get isRelatedObjectInaccessible():Boolean
    public function set isRelatedObjectInaccessible(value:Boolean):void

另请参见

keyCode属性 
keyCode:uint  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

被按下以触发 keyFocusChange 事件的键的键控代码值。



实现
    public function get keyCode():uint
    public function set keyCode(value:uint):void
relatedObject属性 
relatedObject:InteractiveObject  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

对补充 InteractiveObject 实例的引用,焦点变化会对此实例造成影响。例如,发生 focusOut 事件时,relatedObject 表示已获得焦点的 InteractiveObject 实例。

在以下两种情况下,此属性的值可以为 null:不存在任何相关对象;存在相关对象,但该对象位于您无法访问的安全沙箱中。使用 isRelatedObjectInaccessible() 属性可确定上述哪一个原因适用。



实现
    public function get relatedObject():InteractiveObject
    public function set relatedObject(value:InteractiveObject):void

另请参见

shiftKey属性 
shiftKey:Boolean  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指出是否激活了 Shift 功能键,若激活则值为 true。否则,值为 false。仅当 FocusEvent 的类型为 keyFocusChange 时,才使用此属性。



实现
    public function get shiftKey():Boolean
    public function set shiftKey(value:Boolean):void
构造函数详细信息
FocusEvent()构造函数
public function FocusEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = false, relatedObject:InteractiveObject = null, shiftKey:Boolean = false, keyCode:uint = 0, direction:String = "none")

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建一个 Event 对象,其中包含有关焦点事件的特定信息。将 Event 对象作为参数传递给事件侦听器。

参数
type:String — 事件的类型。可能的值为:FocusEvent.FOCUS_INFocusEvent.FOCUS_OUTFocusEvent.KEY_FOCUS_CHANGEFocusEvent.MOUSE_FOCUS_CHANGE
 
bubbles:Boolean (default = true) — 确定 Event 对象是否参与事件流的冒泡阶段。
 
cancelable:Boolean (default = false) — 确定是否可以取消 Event 对象。
 
relatedObject:InteractiveObject (default = null) — 指示受焦点更改影响的补充 InteractiveObject 实例。例如,发生 focusIn 事件时,relatedObject 表示已失去焦点的 InteractiveObject。
 
shiftKey:Boolean (default = false) — 指示是否已激活 Shift 功能键。
 
keyCode:uint (default = 0) — 指示按下以触发 keyFocusChange 事件的键的代码。
 
direction:String (default = "none") — 指示激活目标交互式对象的方向。对于除 focusIn 事件以外的所有事件,设置为 FocusDirection.NONE(默认值)。

另请参见

方法详细信息
clone()方法
override public function clone():Event

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建 FocusEvent 对象的副本,并设置每个属性的值以匹配原始属性值。

返回
Event — 其属性值与原始属性值匹配的新 FocusEvent 对象。
toString()方法 
override public function toString():String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回一个字符串,其中包含 FocusEvent 对象的所有属性。字符串的格式如下:

[FocusEvent type=value bubbles=value cancelable=value relatedObject=value shiftKey=value ]

返回
String — 一个字符串,其中包含 FocusEvent 对象的所有属性。
常量详细信息
FOCUS_IN常量
public static const FOCUS_IN:String = "focusIn"

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

定义 focusIn 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubbles true
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
keyCode 0;仅应用于 keyFocusChange 事件。
relatedObject 受焦点更改影响的补充 InteractiveObject 实例。
shiftKey false;仅应用于 keyFocusChange 事件。
target 刚刚获得焦点的 InteractiveObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。
direction 焦点的分配方向。此属性报告舞台的 assignFocus() 方法的 direction 参数。如果通过其他方式更改焦点,则该值将始终为 FocusDirection.NONE。仅适用于 focusIn 事件。对于所有其他焦点事件,该值将为 FocusDirection.NONE

另请参见

FOCUS_OUT常量 
public static const FOCUS_OUT:String = "focusOut"

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

定义 focusOut 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubbles true
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
keyCode 0;仅应用于 keyFocusChange 事件。
relatedObject 受焦点更改影响的补充 InteractiveObject 实例。
shiftKey false;仅应用于 keyFocusChange 事件。
target 刚刚失去焦点的 InteractiveObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。

另请参见

KEY_FOCUS_CHANGE常量 
public static const KEY_FOCUS_CHANGE:String = "keyFocusChange"

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

定义 keyFocusChange 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubbles true
cancelable true;调用 preventDefault() 方法以取消默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
keyCode 被按下以触发 keyFocusChange 事件的键的键控代码值。
relatedObject 受焦点更改影响的补充 InteractiveObject 实例。
shiftKey 如果 Shift 功能键处于激活状态,则为 true;否则为 false
target 当前具有焦点的 InteractiveObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。

另请参见

MOUSE_FOCUS_CHANGE常量 
public static const MOUSE_FOCUS_CHANGE:String = "mouseFocusChange"

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

定义 mouseFocusChange 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubbles true
cancelable true;调用 preventDefault() 方法以取消默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
keyCode 0;仅应用于 keyFocusChange 事件。
relatedObject 受焦点更改影响的补充 InteractiveObject 实例。
shiftKey false;仅应用于 keyFocusChange 事件。
target 当前具有焦点的 InteractiveObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。

另请参见

示例 如何使用示例
FocusEventExample.as

以下示例使用 FocusEventExampleCustomSprite 类来说明如何将焦点与在舞台上绘制的项目结合使用,以捕获事件和输出信息。本示例将执行以下任务:
  1. 它声明属性 child(属于 Sprite 类型)和 childCount(属于 uint 类型)。
  2. 一个 for 循环在 (0,0) 处创建五个浅蓝色正方形。该循环从将 child 分配给新的 CustomSprite 实例开始。每次创建 CustomSprite 对象时,会执行以下操作:
    • 类型为 uint 的 size 属性设置为 50 像素,bgColor 设置为浅蓝色。
    • Sprite 类的 buttonModeuseHandCursor 属性在构造函数中设置为 true
    • 实例化类型为 click 的事件侦听器以及关联的订阅者 clickHandler()。订阅者方法创建类型为 Sprite 的局部变量 target 并为其赋值以确定单击了其中的哪一个框。然后将舞台的焦点分配给 target
    • 调用 draw() 方法,它可以通过调用 Graphics 类的 beginFill()drawRect()endFill() 方法以及实例属性来创建一个 50 x 50 像素的正方形。
  3. 在 for 循环中,调用 configureListeners() 方法,它将实例化三个事件侦听器/订阅者:
    • focusIn / focusInHandler() 在单击显示列表对象(框)的 click 事件后进行调度。
    • focusOut / focusOutHandler() 在单击另一个框或者焦点离开舞台(例如,通过在 Flash Player 外单击)时进行调度。
    • keyFocusChange / keyFocusChangeHandler() 在使用 Tab 键或者向左键或向右键选择显示列表对象时进行调度。keyFocusChangeHandler() 方法可以捕获向左键和向右键,而调用 preventDefault() 方法可以禁用这两个键。
  4. for 循环中,每个正方形都通过 addChild() 添加到显示列表中并显示(所有正方形都在同一个区域中)。
  5. 然后构造函数调用 refreshLayout(),以便沿显示屏顶部 (y = 0) 每隔 5 个像素显示一个正方形来分布橙色的正方形。
package {
    import flash.display.Sprite;
    import flash.display.DisplayObject;
    import flash.events.FocusEvent;
    import flash.events.IEventDispatcher;

    public class FocusEventExample extends Sprite {
        private var gutter:uint = 5;
        private var childCount:uint = 5;

        public function FocusEventExample() {
            var child:Sprite;
            for(var i:uint; i < childCount; i++) {
                child = new CustomSprite();
                configureListeners(child);
                addChild(child);
            }
            refreshLayout();
        }

        private function configureListeners(dispatcher:IEventDispatcher):void {
            dispatcher.addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
            dispatcher.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
            dispatcher.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
            dispatcher.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
        }

        private function refreshLayout():void {
            var ln:uint = numChildren;
            var child:DisplayObject = getChildAt(0);
            var lastChild:DisplayObject = child;
            for(var i:uint = 1; i < ln; i++) {
                child = getChildAt(i);
                child.x = lastChild.x + lastChild.width + gutter;
                lastChild = child;
            }
        }

        private function focusInHandler(event:FocusEvent):void {
            var target:CustomSprite = CustomSprite(event.target);
            trace("focusInHandler: " + target.name);
        }

        private function focusOutHandler(event:FocusEvent):void {
            var target:CustomSprite = CustomSprite(event.target);
            trace("focusOutHandler: " + target.name);
        }

        private function keyFocusChangeHandler(event:FocusEvent):void {
            if(event.keyCode == 39 || event.keyCode == 37){
                event.preventDefault()
            }
            var target:CustomSprite = CustomSprite(event.target);
            trace("keyFocusChangeHandler: " + target.name);
        }
        private function mouseFocusChangeHandler(event:FocusEvent):void {
            var target:CustomSprite = CustomSprite(event.target);
            trace("mouseFocusChangeHandler: " + target.name);
        }
    }
}

import flash.display.Sprite;
import flash.events.MouseEvent;

class CustomSprite extends Sprite {
    private var size:uint = 50;
    private var bgColor:uint = 0x00CCFF;

    public function CustomSprite() {
        buttonMode = true;
        useHandCursor = true;
        addEventListener(MouseEvent.CLICK, clickHandler);
        draw(size, size);
    }

    private function draw(w:uint, h:uint):void {
        graphics.beginFill(bgColor);
        graphics.drawRect(0, 0, w, h);
        graphics.endFill();
    }

    private function clickHandler(event:MouseEvent):void {
        var target:Sprite = Sprite(event.target);
        trace("clickHandler: " + target.name);
        stage.focus = target;
    }
}