mx.effects
public class Effect
继承Effect Inheritance EventDispatcher Inheritance Object
实现 IEffect
子类 AddChildAction, AddItemAction, CompositeEffect, MaskEffect, RemoveChildAction, RemoveItemAction, SetPropertyAction, SetStyleAction, SoundEffect, TweenEffect, UnconstrainItemAction

Effect 类是一个抽象基类,用于定义所有 Flex 效果的基本功能。Effect 类定义所有效果的基本工厂类。EffectInstance 类定义所有效果实例子类的基类。

在应用程序中不创建 Effect 类本身的实例,而是创建一个子类的实例,如 Fade 或 WipeLeft。

MXML 语法expanded隐藏 MXML 语法

The Effect class defines the following properties, which all of its subclasses inherit:

  <mx:tagname
    Properties
    customFilter=""
    duration="500"
    filter=""
    hideFocusRing="false"
    perElementOffset="0"
    repeatCount="1"
    repeatDelay="0"
    startDelay="0"
    suspendBackgroundProcessing="false|true"
    target="effect target"
    targets="array of effect targets"
     
    Events
    effectEnd="No default"
    efectStart="No default"
  />
  

查看示例

另请参见

mx.effects.EffectInstance
About behaviors
About behaviors
Applying behaviors in MXML
Applying behaviors in MXML
Applying behaviors in ActionScript
Working with effects
Working with effects
Working with effects
Application coding
About creating a custom effect
About creating a custom effect
About creating a custom effect
Writing an effect for a transition
Defining a custom effect trigger
Using effects with charts


公共属性
 属性定义方
  className : String
[只读 (read-only)] 效果类的名称,如“Fade”。
Effect
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  customFilter : EffectTargetFilter
指定一个 EffectTargetFilter 类型的自定义滤镜对象,效果将使用此对象来确定播放效果的目标。
Effect
  duration : Number
效果的持续时间(以毫秒为单位)。
Effect
  effectTargetHost : IEffectTargetHost
一个属性,您可以通过设置此属性访问数据效果基于列表的目标控件。
Effect
  filter : String
指定用于过滤效果目标的算法。
Effect
  hideFocusRing : Boolean
确定在开始播放效果时,效果是否应隐藏对焦环。
Effect
  instanceClass : Class
一个 Class 类型的对象,用于指定此效果类的效果实例类。
Effect
  isPlaying : Boolean
[只读 (read-only)] 一个只读标志,如果当前正在播放效果的任一实例,则为 true;否则,则为 false。
Effect
  perElementOffset : Number
在效果的第一个目标之后,其它效果目标的附加延迟(以毫秒为单位)。
Effect
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  relevantProperties : Array
一个属性名称 Array,执行过滤时将使用这些名称。
Effect
  relevantStyles : Array
一个样式名称 Array,执行过滤时将使用这些名称。
Effect
  repeatCount : int = 1
效果的重复次数。
Effect
  repeatDelay : int = 0
重复播放效果前需要等待的时间(以毫秒为单位)。
Effect
  startDelay : int = 0
开始播放效果前需要等待的时间(以毫秒为单位)。
Effect
  suspendBackgroundProcessing : Boolean = false
如果为 true,则在播放效果时阻止所有背景处理。
Effect
  target : Object
要应用此效果的 UIComponent 对象。
Effect
  targets : Array
一个 UIComponent 对象 Array,这些对象都是效果的目标。
Effect
  triggerEvent : Event
如果触发了某个效果,则此项目是由 EffectManager 传递给此 Effect 的 Event 对象;如果 EffectManager 当前没有播放此效果,则为 null。
Effect
受保护的属性
 属性定义方
  endValuesCaptured : Boolean = false
一个标志,如果已确定效果的结束值,则该标志中包含 true;如果需要在效果运行时从效果目标的当前属性捕获这些值,则其中包含 false。
Effect
公共方法
 方法定义方
  
Effect(target:Object = null)
构造函数。
Effect
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
捕获效果目标上相关属性的当前值,并将这些值另存为结束值。
Effect
  
捕获另一组目标相关属性的当前值。在运行数据更改效果时,此函数由 Flex 使用。
Effect
  
捕获效果目标上相关属性的当前值。
Effect
  
创建一个效果实例并对其进行初始化。
Effect
  
createInstances(targets:Array = null):Array
获取一个目标对象 Array,并对每个目标调用 createInstance() 方法。
Effect
  
删除实例中的事件侦听器,然后从实例列表中删除该实例。
Effect
 Inherited
将事件调度到事件流中。
EventDispatcher
  
end(effectInstance:IEffectInstance = null):void
中断当前正在播放的效果,立即跳转到该效果的末尾。
Effect
  
返回一个字符串 Array,其中每个 String 都是被此效果更改的属性名称。
Effect
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
暂停效果,直到调用 resume() 方法。
Effect
  
play(targets:Array = null, playReversedFromEnd:Boolean = false):Array
开始播放效果。
Effect
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
  
在效果由 pause() 方法暂停后继续播放效果。
Effect
  
逆序播放效果;如果当前正在播放效果,则从该效果的当前位置开始逆序播放。
Effect
 Inherited
设置循环操作动态属性的可用性。
Object
  
停止播放效果,使效果目标保持当前状态。
Effect
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
受保护的方法
 方法定义方
  
applyValueToTarget(target:Object, property:String, value:*, props:Object):void
供 Effect 基础结构内部使用。
Effect
  
当效果实例完成播放时调用。
Effect
  
当效果实例开始播放时调用此方法。
Effect
  
filterInstance(propChanges:Array, target:Object):Boolean
确定筛选效果实例所用的逻辑。
Effect
  
getValueFromTarget(target:Object, property:String):*
由 captureStartValues() 方法调用,用来从目标获得某个属性的值。
Effect
  
将效果的属性复制到效果实例。
Effect
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  当效果完成播放时(既可以是效果实际完成播放时,也可以是通过调用 end() 方法中断效果时)调度。Effect
  当效果开始播放时调度。Effect
属性详细信息
className属性
className:String  [只读 (read-only)]

效果类的名称,如 "Fade"

这是一个短类名称或 unqualified 类名称,不包含包名称。如果需要限定名称,可使用 flash.utils 包中的 getQualifiedClassName() 方法。



实现
    public function get className():String
customFilter属性 
customFilter:EffectTargetFilter  [读写]

指定一个 EffectTargetFilter 类型的自定义滤镜对象,效果将使用此对象来确定播放效果的目标。

只有在播放效果之前调用 captureStartValues() 方法时,才执行目标过滤。Flex 会在转移效果过程中自动调用 captureStartValues() 方法。

使用 filter 属性可实现简单过滤。如果 customFilter 属性值非空,则会忽略 filter 属性。



实现
    public function get customFilter():EffectTargetFilter
    public function set customFilter(value:EffectTargetFilter):void
duration属性 
duration:Number  [读写]

效果的持续时间(以毫秒为单位)。

在 Parallel 或 Sequence 效果中,可通过 duration 属性设置每种效果的持续时间。例如,如果 Sequence 效果的 duration 属性设置为 3000,则 Sequence 中的每个效果都会播放 3000 毫秒。

对于重复播放的效果来说,duration 属性将指定效果各个实例的持续时间。因此,如果某个效果的 duration 属性设置为 2000,并且 repeatCount 属性设置为 3,则播放此效果共需要 6000 毫秒(6 秒)。



实现
    public function get duration():Number
    public function set duration(value:Number):void
effectTargetHost属性 
effectTargetHost:IEffectTargetHost  [读写]

一个属性,您可以通过设置此属性访问数据效果基于列表的目标控件。通过设置此属性,效果类的实例将能够访问播放此效果的基于列表的控件。



实现
    public function get effectTargetHost():IEffectTargetHost
    public function set effectTargetHost(value:IEffectTargetHost):void
endValuesCaptured属性 
protected var endValuesCaptured:Boolean = false

一个标志,如果已确定效果的结束值,则标志中包含 true;如果需要在效果运行时从效果目标的当前属性捕获这些值,则其中包含 false。此属性对数据效果而言是必需的,因为设置数据效果(如 DefaultListEffect 和 DefaultTileListEffect)的顺序比设置普通效果的顺序要复杂。

默认值为 false.

filter属性 
filter:String  [读写]

指定用于过滤效果目标的算法。如果此值为 null,将指定不进行任何过滤。

只有在播放效果之前调用 captureStartValues() 方法时,才执行目标过滤。当转移过程或基于列表的控件的数据效果中需使用该效果时,Flex 会自动调用 captureStartValues() 方法。

使用此属性可实现简单过滤。使用 customFilter 属性可实现更为复杂的过滤。如果 customFilter 属性值非空,则会忽略此属性。

filter 属性可使用以下值:



实现
    public function get filter():String
    public function set filter(value:String):void
hideFocusRing属性 
hideFocusRing:Boolean  [读写]

确定在开始播放效果时,效果是否应隐藏对焦环。效果目标负责隐藏对焦环。UIComponent 类的子类将自动隐藏对焦环。如果效果目标不是 UIComponent 类的子类,则必须向其添加隐藏对焦环的功能。

将此属性设置为 true 可在播放效果期间隐藏对焦环。

对于 Effect 的子类,默认值是 false。对于 MaskEffect 的子类,默认值是 true



实现
    public function get hideFocusRing():Boolean
    public function set hideFocusRing(value:Boolean):void
instanceClass属性 
public var instanceClass:Class

一个 Class 类型的对象,用于指定此效果类的效果实例类。

Effect 类的所有子类都必须在其构造函数中设置此属性。

isPlaying属性 
isPlaying:Boolean  [只读 (read-only)]

一个只读标志,如果当前正在播放效果的任一实例,则为 true;否则,则为 false。



实现
    public function get isPlaying():Boolean
perElementOffset属性 
perElementOffset:Number  [读写]

在效果的第一个目标之后,其它效果目标的附加延迟(以毫秒为单位)。此值将添加到 startDelay 属性的值中。



实现
    public function get perElementOffset():Number
    public function set perElementOffset(value:Number):void
relevantProperties属性 
relevantProperties:Array  [读写]

一个属性名称 Array,执行过滤时将使用这些名称。此属性仅供内部使用,效果用户不应设置此属性。

默认值为 getAffectedProperties() 方法返回的 Array。



实现
    public function get relevantProperties():Array
    public function set relevantProperties(value:Array):void
relevantStyles属性 
relevantStyles:Array  [读写]

一个样式名称 Array,执行过滤时将使用这些名称。此属性仅供内部使用,效果用户不应设置此属性。

默认值为 getAffectedProperties() 方法返回的 Array。



实现
    public function get relevantStyles():Array
    public function set relevantStyles(value:Array):void
repeatCount属性 
public var repeatCount:int = 1

效果的重复次数。可能值为任何大于等于 0 的整数。值为 1 表示播放一次效果。值为 0 表示无限制地循环播放效果,直到通过调用 end() 方法停止播放。

默认值为 1.

repeatDelay属性 
public var repeatDelay:int = 0

重复播放效果前需要等待的时间(以毫秒为单位)。可能值为任何大于等于 0 的整数。

默认值为 0.

startDelay属性 
public var startDelay:int = 0

开始播放效果前需要等待的时间(以毫秒为单位)。此值可以是任何大于或等于 0 的整数。如果使用 repeatCount 属性重复播放效果,则只在首次播放效果时应用 startDelay

默认值为 0.

suspendBackgroundProcessing属性 
public var suspendBackgroundProcessing:Boolean = false

如果为 true,则在播放效果时阻止所有背景处理。背景处理包括度量、布局和处理来自服务器的响应。默认值为 false

大多数情况下,建议将此属性设置为 true,因为这可以提高应用程序的性能。但是,如果符合下列条件之一,则应将此属性设置为 false

默认值为 false.

target属性 
target:Object  [读写]

要应用此效果的 UIComponent 对象。当效果触发器触发某个效果时,会自动将 target 属性设置为触发该效果的对象。



实现
    public function get target():Object
    public function set target(value:Object):void
targets属性 
targets:Array  [读写]

一个 UIComponent 对象 Array,这些对象都是效果的目标。播放效果时,会对各个目标并行执行效果。设置 target 属性将替换此 Array 中的所有对象。设置 targets 属性后,target 属性将返回此 Array 中的第一个项目。



实现
    public function get targets():Array
    public function set targets(value:Array):void
triggerEvent属性 
triggerEvent:Event  [读写]

如果触发了某个效果,则此项目是由 EffectManager 传递给此 Effect 的 Event 对象;如果 EffectManager 当前没有播放此效果,则为 null



实现
    public function get triggerEvent():Event
    public function set triggerEvent(value:Event):void
构造函数详细信息
Effect()构造函数
public function Effect(target:Object = null)

构造函数。

启动效果的过程通常分为三个步骤:

参数
target:Object (default = null) — 要使用此效果为其设置动画的 Object。
方法详细信息
applyValueToTarget()方法
protected function applyValueToTarget(target:Object, property:String, value:*, props:Object):void

供 Effect 基础结构内部使用。如果已调用 captureStartValues(),则当 Flex 调用 play() 方法时,将使用此函数将目标设置回初始状态。默认行为是使用 getValueFromTarget() 方法获取捕获的值,并直接在目标的属性上进行设置。例如:

target[property] = value;

仅当需要以其它方式应用捕获的值时,才覆盖此方法。请注意,目标的样式属性将使用其它机制进行设置。使用 relevantStyles 属性指定要捕获并应用的样式属性。

参数

target:Object — 效果目标。
 
property:String — 目标属性。
 
value:* — 属性的值。
 
props:Object — 一个对象数组,其中每个 Array 元素中都包含效果正在监视的属性的 startend Object。

captureEndValues()方法 
public function captureEndValues():void

捕获效果目标上相关属性的当前值,并将这些值另存为结束值。

如果此效果是数据更改效果的一部分,Flex 会自动调用 captureEndValues() 方法。

captureMoreStartValues()方法 
public function captureMoreStartValues(targets:Array):void

捕获另一组目标相关属性的当前值

在运行数据更改效果时,此函数由 Flex 使用。

参数

targets:Array — 要捕获其值的目标的数组

captureStartValues()方法 
public function captureStartValues():void

捕获效果目标上相关属性的当前值。Flex 会在转移效果过程中自动调用 captureStartValues() 方法。

如果希望效果指出此效果的起始值和结束值,请使用此函数。下面是使用此函数的正确步骤:

  1. 调用 captureStartValues() 方法。效果捕获效果起始值。
  2. 更改效果目标,如添加/删除子项、更改属性、更改位置或更改尺寸。
  3. 调用 play() 方法。此效果将捕获结束值。此函数会为此效果创建的每个效果实例填充 EffectInstance.propertyChanges 属性。效果开发人员可以使用 propertyChanges 属性检索其效果的起始值和结束值。

createInstance()方法 
public function createInstance(target:Object = null):IEffectInstance

创建一个效果实例并对其进行初始化。在播放效果实例前,使用此方法(而非 play() 方法)处理效果实例属性。

所创建的效果实例的类型由 instanceClass 属性指定。然后,使用 initInstance() 方法初始化此实例。如果该实例是 EffectManager 在效果触发器触发此效果时创建的,则还需要调用 EffectInstance.initEffect() 方法进一步初始化此效果。

调用 createInstance() 方法不会播放效果。您必须对返回的效果实例调用 startEffect() 方法。

Effect.play() 方法将自动调用此函数。

参数

target:Object (default = null) — 要使用此效果为其设置动画的对象。

返回
IEffectInstance — 效果的效果实例对象。
createInstances()方法 
public function createInstances(targets:Array = null):Array

获取一个目标对象 Array,并对每个目标调用 createInstance() 方法。

参数

targets:Array (default = null) — 要使用此效果设置动画的对象的数组。

返回
Array — 效果的效果实例对象的数组,一个目标一个数组。
deleteInstance()方法 
public function deleteInstance(instance:IEffectInstance):void

删除实例中的事件侦听器,然后从实例列表中删除该实例。

参数

instance:IEffectInstance

effectEndHandler()方法 
protected function effectEndHandler(event:EffectEvent):void

当效果实例完成播放时调用。如果覆盖此方法,请确保调用超级方法。

参数

event:EffectEvent — EffectEvent 类型的事件对象。

effectStartHandler()方法 
protected function effectStartHandler(event:EffectEvent):void

当效果实例开始播放时调用此方法。如果覆盖此方法,请确保调用超级方法。

参数

event:EffectEvent — EffectEvent 类型的事件对象。

end()方法 
public function end(effectInstance:IEffectInstance = null):void

中断当前正在播放的效果,立即跳转到该效果的末尾。调用此方法将调用 EffectInstance.end() 方法。

如果调用此方法来结束播放效果,效果实例将调度 effectEnd 事件。

如果将效果实例作为参数传递,则会中断此实例。如果没有传入参数,则该效果当前生成的所有效果实例都将中断。

参数

effectInstance:IEffectInstance (default = null) — 要终止的 EffectInstance。

filterInstance()方法 
protected function filterInstance(propChanges:Array, target:Object):Boolean

确定筛选效果实例所用的逻辑。CompositeEffect 类将覆盖此方法。

参数

propChanges:Array — 效果修改的属性。
 
target:Object — 效果目标。

返回
Boolean — 如果应播放效果实例,则返回 true
getAffectedProperties()方法 
public function getAffectedProperties():Array

返回一个字符串 Array,其中每个 String 都是被此效果更改的属性名称。例如,Move 效果会返回一个包含 "x""y" 的 Array。

Effect 的每个子类都必须实现此方法。EffectManager 使用此方法来避免试图同时对同一对象的相同属性设置不同的动画效果。

返回
Array — 一个用于指定此效果修改的属性的名称的字符串 Array。

另请参见

getValueFromTarget()方法 
protected function getValueFromTarget(target:Object, property:String):*

captureStartValues() 方法调用,用来从目标获得某个属性的值。此函数应仅供效果框架内部调用。默认行为是只返回 target[property]。如果您需要其它行为,效果开发人员可以覆盖此函数。

参数

target:Object — 效果目标。
 
property:String — 目标属性。

返回
* — 目标属性的值。
initInstance()方法 
protected function initInstance(instance:IEffectInstance):void

将效果的属性复制到效果实例。

Flex 将从 Effect.createInstance() 方法调用此方法;您不必亲自调用它。

创建自定义效果时覆盖此方法,将属性从 Effect 类复制到效果实例类。在覆盖中,必须调用 super.initInstance()

参数

instance:IEffectInstance — 要初始化的效果实例。

另请参见

pause()方法 
public function pause():void

暂停效果,直到调用 resume() 方法。

play()方法 
public function play(targets:Array = null, playReversedFromEnd:Boolean = false):Array

开始播放效果。通常在调用 play() 方法之前先调用 end() 方法,以确保在开始播放新效果前已结束先前效果的所有实例。

所有子类都必须实现此方法。

参数

targets:Array (default = null) — 播放此效果的目标对象的数组。如果已指定此参数,则不会使用效果的 targets 属性。
 
playReversedFromEnd:Boolean (default = false) — 如果为 true,则向后播放效果。

返回
Array — 效果的 EffectInstance 对象的数组,一个目标一个数组。
resume()方法 
public function resume():void

在效果由 pause() 方法暂停后继续播放效果。

reverse()方法 
public function reverse():void

逆序播放效果;如果当前正在播放效果,则从该效果的当前位置开始逆序播放。

stop()方法 
public function stop():void

停止播放效果,使效果目标保持当前状态。与调用 pause() 方法不同,无法先调用 stop() 方法再调用 resume() 方法。不过,您可以调用 play() 方法重新播放效果。

如果调用此方法来结束播放效果,效果实例将调度 effectEnd 事件。

对于遮罩效果,停止播放效果后不会自动删除遮罩。如果事先没有删除遮罩就继续对同一目标运行遮罩效果,可能会出现意外结果。

事件详细信息
effectEnd 事件
事件对象类型: mx.events.EffectEvent
属性 EffectEvent.type = mx.events.EffectEvent.EFFECT_END

当效果完成播放时(既可以是效果完成播放时,也可以是通过调用 end() 方法中断效果时)调度。

EffectEvent.EFFECT_END 常数可为 effectEnd 事件定义事件对象的 type 属性值。

事件对象的属性有下列值:

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
effectInstance 事件的效果实例对象。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
effectStart 事件  
事件对象类型: mx.events.EffectEvent
属性 EffectEvent.type = mx.events.EffectEvent.EFFECT_START

当效果开始播放时调度。

EffectEvent.EFFECT_START 常数可为 effectStart 事件定义事件对象的 type 属性值。

事件对象的属性有下列值:

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
effectInstance 事件的效果实例对象。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
示例 如何使用示例
SimpleEffectExample.mxml
<?xml version="1.0"?>
<!-- Simple example to demonstrate the Effect class. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script>
        <![CDATA[

            import mx.controls.Alert;

            // Event handler for the effectEnd event.            
            private function endEffectHandler():void {
                Alert.show("Effect Ended!");
            }

            // Event handler for the reset button.            
            private function resetHandler():void {
                expand.end(); 
                img.width=30; 
                img.height=60; 
                button1.enabled=true;
            }
        ]]>
    </mx:Script>


    <mx:Resize id="expand" target="{img}" widthTo="100" heightTo="200" 
        duration="10000" effectEnd="endEffectHandler();"/>

    <mx:Panel title="Resize Effect Example" width="100%" height="100%" 
        paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">

        <mx:Text width="100%" color="blue" 
            text="Use the Button controls to control the Resize effect."/>

        <mx:Image id="img" width="30" height="60"
            source="@Embed(source='assets/Nokia_6630.png')"/>
     
        <mx:ControlBar>
            <mx:Button id="button1" label="Start" click="expand.play(); button1.enabled=false;"/>
            <mx:Button label="Pause" click="expand.pause();"/>
            <mx:Button label="Resume" click="expand.resume();"/>
            <mx:Button label="Reverse" click="expand.reverse();"/>
            <mx:Button label="End" click="expand.end();"/>
            <mx:Button label="Reset" click="resetHandler();"/>
        </mx:ControlBar>
        
    </mx:Panel>
</mx:Application>