包 | mx.effects |
类 | public class Effect |
继承 | Effect EventDispatcher Object |
实现 | IEffect |
子类 | AddChildAction, AddItemAction, CompositeEffect, MaskEffect, RemoveChildAction, RemoveItemAction, SetPropertyAction, SetStyleAction, SoundEffect, TweenEffect, UnconstrainItemAction |
在应用程序中不创建 Effect 类本身的实例,而是创建一个子类的实例,如 Fade 或 WipeLeft。
MXML 语法隐藏 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" />
另请参见
属性 | 定义方 | ||
---|---|---|---|
className : String [只读 (read-only)] 效果类的名称,如“Fade”。 | Effect | ||
constructor : 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 | ||
prototype : 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 | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void 使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
捕获效果目标上相关属性的当前值,并将这些值另存为结束值。 | Effect | ||
捕获另一组目标相关属性的当前值。在运行数据更改效果时,此函数由 Flex 使用。 | Effect | ||
捕获效果目标上相关属性的当前值。 | Effect | ||
创建一个效果实例并对其进行初始化。 | Effect | ||
获取一个目标对象 Array,并对每个目标调用 createInstance() 方法。 | Effect | ||
删除实例中的事件侦听器,然后从实例列表中删除该实例。 | Effect | ||
将事件调度到事件流中。 | EventDispatcher | ||
中断当前正在播放的效果,立即跳转到该效果的末尾。 | Effect | ||
返回一个字符串 Array,其中每个 String 都是被此效果更改的属性名称。 | Effect | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
指示对象是否已经定义了指定的属性。 | Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
暂停效果,直到调用 resume() 方法。 | Effect | ||
开始播放效果。 | Effect | ||
指示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
在效果由 pause() 方法暂停后继续播放效果。 | Effect | ||
逆序播放效果;如果当前正在播放效果,则从该效果的当前位置开始逆序播放。 | Effect | ||
设置循环操作动态属性的可用性。 | Object | ||
停止播放效果,使效果目标保持当前状态。 | Effect | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | EventDispatcher |
方法 | 定义方 | ||
---|---|---|---|
供 Effect 基础结构内部使用。 | Effect | ||
当效果实例完成播放时调用。 | Effect | ||
当效果实例开始播放时调用此方法。 | Effect | ||
确定筛选效果实例所用的逻辑。 | Effect | ||
由 captureStartValues() 方法调用,用来从目标获得某个属性的值。 | Effect | ||
将效果的属性复制到效果实例。 | Effect |
事件 | 摘要 | 定义方 | ||
---|---|---|---|---|
[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | |||
[广播事件] 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
属性可使用以下值:
"add"
,则可以在作为子项添加到容器的任何目标上播放效果。
"addItem"
,则可以在添加到 List 或 TileList 控件的任何列表项的项目渲染器上播放效果。
"hide"
,则可以在已将 visible 属性从 true
更改为 false
的任何目标上播放效果。
"move"
,则可以在更改了 x
或 y
属性的任何目标上播放效果。
"remove"
,则可以在已作为容器子项删除的任何目标上播放效果。
"removeItem"
,则可以在从 List 或 TileList 控件中删除的任何列表项的项目渲染器上播放效果。
"replacedItem"
,则可以在 List 或 TileList 控件中被替换为新项目的任何列表项的项目渲染器上播放效果。
"replacementItem"
,则可以在添加到 List 或 TileList 控件中用以替换现有项目的任何列表项的项目渲染器上播放效果。
"resize"
,则可以在更改了 width
或 height
属性的任何目标上播放效果。
"show"
,则可以在已将 visible 属性从 false
更改为 true
的任何目标上播放效果。
""
,则指定不进行任何过滤。
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 | 属性 |
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 | 属性 |
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)
构造函数。
启动效果的过程通常分为三个步骤:
new
运算符创建一个效果对象实例。
duration
。
play()
方法或将效果分配给触发器。
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 元素中都包含效果正在监视的属性的 start 和 end 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()
方法。
如果希望效果指出此效果的起始值和结束值,请使用此函数。下面是使用此函数的正确步骤:
captureStartValues()
方法。效果捕获效果起始值。
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
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
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。
|
<?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>