包 | flash.events |
类 | public class FocusEvent |
继承 | FocusEvent Event Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
-
FocusEvent.FOCUS_IN
-
FocusEvent.FOCUS_OUT
-
FocusEvent.KEY_FOCUS_CHANGE
-
FocusEvent.MOUSE_FOCUS_CHANGE
属性 | 由以下参数定义 | ||
---|---|---|---|
bubbles : Boolean [只读]
表示事件是否为冒泡事件。 | Event | ||
cancelable : Boolean [只读]
表示是否可以阻止与事件相关联的行为。 | Event | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
currentTarget : Object [只读]
当前正在使用某个事件侦听器处理 Event 对象的对象。 | Event | ||
direction : String
指定 focusIn 事件的焦点方向。 | FocusEvent | ||
eventPhase : uint [只读]
事件流中的当前阶段。 | Event | ||
isRelatedObjectInaccessible : Boolean
如果为 true,则 relatedObject 属性是出于与安全沙箱相关的原因而设置为 null 的。 | FocusEvent | ||
keyCode : uint
被按下以触发 keyFocusChange 事件的键的键控代码值。 | FocusEvent | ||
relatedObject : InteractiveObject
对补充 InteractiveObject 实例的引用,焦点变化会对此实例造成影响。 | FocusEvent | ||
shiftKey : Boolean
指出是否激活了 Shift 功能键,若激活则值为 true。 | FocusEvent | ||
target : Object [只读]
事件目标。 | Event | ||
type : String [只读]
事件的类型。 | 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 | ||
用于在自定义 ActionScript 3.0 Event 类中实现 toString() 方法的实用程序函数。 | Event | ||
表示对象是否已经定义了指定的属性。 | Object | ||
检查是否已对事件调用 preventDefault() 方法。 | Event | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
如果可以取消事件的默认行为,则取消该行为。 | Event | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
设置循环操作动态属性的可用性。 | Object | ||
防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。 | Event | ||
防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。 | Event | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
[覆盖]
返回一个字符串,其中包含 FocusEvent 对象的所有属性。 | FocusEvent | ||
返回指定对象的原始值。 | Object |
常量 | 由以下参数定义 | ||
---|---|---|---|
FOCUS_IN : String = "focusIn" [静态]
定义 focusIn 事件对象的 type 属性值。 | FocusEvent | ||
FOCUS_OUT : String = "focusOut" [静态]
定义 focusOut 事件对象的 type 属性值。 | FocusEvent | ||
KEY_FOCUS_CHANGE : String = "keyFocusChange" [静态]
定义 keyFocusChange 事件对象的 type 属性值。 | FocusEvent | ||
MOUSE_FOCUS_CHANGE : String = "mouseFocusChange" [静态]
定义 mouseFocusChange 事件对象的 type 属性值。 | FocusEvent |
direction | 属性 |
isRelatedObjectInaccessible | 属性 |
isRelatedObjectInaccessible:Boolean
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 10, Flash Lite 4 |
如果为 true
,则 relatedObject
属性是出于与安全沙箱相关的原因而设置为 null
的。如果 relatedObject
的标称值是对其他沙箱中的 DisplayObject 的引用,则 relatedObject
将设置为 null
,除非具有双向跨越此沙箱边界的权限。通过以下方式确立权限:从 SWF 文件调用 Security.allowDomain()
;或者通过从图像文件的服务器提供策略文件,然后在加载图像时设置 LoaderContext.checkPolicyFile
属性。
实现
public function get isRelatedObjectInaccessible():Boolean
public function set isRelatedObjectInaccessible(value:Boolean):void
相关 API 元素
keyCode | 属性 |
relatedObject | 属性 |
relatedObject:InteractiveObject
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
对补充 InteractiveObject 实例的引用,焦点变化会对此实例造成影响。例如,发生 focusOut
事件时,relatedObject
表示已获得焦点的 InteractiveObject 实例。
在以下两种情况下,此属性的值可以为 null
:不存在任何相关对象;存在相关对象,但该对象位于您无法访问的安全沙箱中。使用 isRelatedObjectInaccessible()
属性可确定上述哪一个原因适用。
实现
public function get relatedObject():InteractiveObject
public function set relatedObject(value:InteractiveObject):void
相关 API 元素
shiftKey | 属性 |
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, Flash Lite 4 |
创建一个 Event 对象,其中包含有关焦点事件的特定信息。将 Event 对象作为参数传递给事件侦听器。
参数type:String — 事件的类型。可能的值包括:FocusEvent.FOCUS_IN 、FocusEvent.FOCUS_OUT 、FocusEvent.KEY_FOCUS_CHANGE 和 FocusEvent.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 (默认值)。
|
相关 API 元素
clone | () | 方法 |
toString | () | 方法 |
FOCUS_IN | 常量 |
public static const FOCUS_IN:String = "focusIn"
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定义 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 。 |
相关 API 元素
FOCUS_OUT | 常量 |
public static const FOCUS_OUT:String = "focusOut"
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定义 focusOut
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | true |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
keyCode | 0;仅应用于 keyFocusChange 事件。 |
relatedObject | 受焦点更改影响的补充 InteractiveObject 实例。 |
shiftKey | false ;仅应用于 keyFocusChange 事件。 |
target | 刚刚失去焦点的 InteractiveObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。
|
相关 API 元素
KEY_FOCUS_CHANGE | 常量 |
public static const KEY_FOCUS_CHANGE:String = "keyFocusChange"
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定义 keyFocusChange
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | true |
cancelable | true ;调用 preventDefault() 方法以取消默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
keyCode | 被按下以触发 keyFocusChange 事件的键的键控代码值。 |
relatedObject | 受焦点更改影响的补充 InteractiveObject 实例。 |
shiftKey | 如果 Shift 功能键处于激活状态,则为 true ;否则为 false 。 |
target | 当前具有焦点的 InteractiveObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。
|
相关 API 元素
MOUSE_FOCUS_CHANGE | 常量 |
public static const MOUSE_FOCUS_CHANGE:String = "mouseFocusChange"
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
定义 mouseFocusChange
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | true |
cancelable | true ;调用 preventDefault() 方法以取消默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
keyCode | 0;仅应用于 keyFocusChange 事件。 |
relatedObject | 受焦点更改影响的补充 InteractiveObject 实例。 |
shiftKey | false ;仅应用于 keyFocusChange 事件。 |
target | 当前具有焦点的 InteractiveObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。
|
相关 API 元素
FocusEventExample
和 CustomSprite
类来说明如何将焦点与在舞台上绘制的项目结合使用,以捕获事件和输出信息。本示例将执行以下任务:
- 它声明属性
child
(属于 Sprite 类型)和childCount
(属于 uint 类型)。 - 一个
for
循环在 (0,0) 处创建五个浅蓝色正方形。该循环从将child
分配给新的 CustomSprite 实例开始。每次创建 CustomSprite 对象时,会执行以下操作:- 类型为 uint 的
size
属性设置为 50 像素,bgColor
设置为浅蓝色。 - Sprite 类的
buttonMode
和useHandCursor
属性在构造函数中设置为true
。 - 实例化类型为
click
的事件侦听器以及关联的订阅者clickHandler()
。订阅者方法创建类型为 Sprite 的局部变量target
并为其赋值以确定单击了其中的哪一个框。然后将舞台的焦点分配给target
。 - 调用
draw()
方法,它可以通过调用 Graphics 类的beginFill()
、drawRect()
和endFill()
方法以及实例属性来创建一个 50 x 50 像素的正方形。
- 类型为 uint 的
- 在 for 循环中,调用
configureListeners()
方法,它将实例化三个事件侦听器/订阅者:focusIn
/focusInHandler()
在单击显示列表对象(框)的click
事件后进行调度。focusOut
/focusOutHandler()
在单击另一个框或者焦点离开舞台(例如,通过在 Flash Player 外单击)时进行调度。keyFocusChange
/keyFocusChangeHandler()
在使用 Tab 键或者向左键或向右键选择显示列表对象时进行调度。keyFocusChangeHandler()
方法可以捕获向左键和向右键,而调用preventDefault()
方法可以禁用这两个键。
- 在
for
循环中,每个正方形都通过addChild()
添加到显示列表中并显示(所有正方形都在同一个区域中)。 - 然后构造函数调用
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; } }
Tue Jun 12 2018, 11:04 AM Z