blob: fd414489600bce2f8ba0673d618d8367897c730a [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////
//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
package mx.effects
{
import flash.events.Event;
import mx.effects.effectClasses.PropertyChanges;
/**
* The IEffectInstance interface represents an instance of an effect
* playing on a target.
* Each target has a separate effect instance associated with it.
* An effect instance's lifetime is transitory.
* An instance is created when the effect is played on a target
* and is destroyed when the effect has finished playing.
* If there are multiple effects playing on a target at the same time
* (for example, a Parallel effect), there is a separate effect instance
* for each effect.
*
* <p>Effect developers must create an instance class
* for their custom effects.</p>
*
* @see mx.effects.Effect
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
public interface IEffectInstance
{
//--------------------------------------------------------------------------
//
// Properties
//
//--------------------------------------------------------------------------
//----------------------------------
// className
//----------------------------------
/**
* The name of the effect class, such as <code>"FadeInstance"</code>.
*
* <p>This is a short or "unqualified" class name
* that does not include the package name.
* If you need the qualified name, use the
* <code>getQualifiedClassName()</code> method
* in the flash.utils package.</p>
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get className():String;
//----------------------------------
// duration
//----------------------------------
/**
* The duration of the effect, in milliseconds.
*
* @default 500
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get duration():Number;
/**
* @private
*/
function set duration(value:Number):void;
//----------------------------------
// effect
//----------------------------------
/**
* The IEffect object that created this IEffectInstance object.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get effect():IEffect;
/**
* @private
*/
function set effect(value:IEffect):void;
//----------------------------------
// effectTargetHost
//----------------------------------
/**
* A property that lets you access the target
* list-based control of a data effect.
* This property enables an instance of an effect class
* to communicate with the list-based control
* on which the effect is playing.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get effectTargetHost():IEffectTargetHost;
/**
* @private
*/
function set effectTargetHost(value:IEffectTargetHost):void;
//----------------------------------
// hideFocusRing
//----------------------------------
/**
* Determines whether the effect should hide
* the focus ring when starting the effect.
* The effect target is responsible for the hiding the focus ring.
* Subclasses of the UIComponent class hide the focus ring automatically.
* If the effect target is not a subclass of the UIComponent class,
* you must add functionality to it to hide the focus ring.
*
* <p>Set this property to <code>true</code>
* to hide the focus ring during the effect.</p>
*
* <p>For subclasses of Effect, the default value is <code>false</code>.
* For subclasses of MaskEffect, the default value is <code>true</code>.
* </p>
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get hideFocusRing():Boolean;
/**
* @private
*/
function set hideFocusRing(value:Boolean):void;
//----------------------------------
// playheadTime
//----------------------------------
/**
* Current time position of the effect.
* This property has a value between 0 and the total duration,
* which includes the Effect's <code>startDelay</code>,
* <code>repeatCount</code>, and <code>repeatDelay</code>.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get playheadTime():Number;
/**
* @private
*/
function set playheadTime(value:Number):void;
//----------------------------------
// propertyChanges
//----------------------------------
/**
* Specifies the PropertyChanges object containing
* the start and end values for the set of properties
* relevant to the effect's targets.
* This property is only set if the
* <code>captureStartValues()</code> method was called
* on the effect that created this effect instance.
*
* <p>You often use the <code>propertyChanges</code> property
* to create an effect that is used as part of a transition.
* Flex automatically calls the <code>captureStartValues()</code>
* method when it starts a transition.
* Within your override of the <code>Effectinstance.play()</code>
* method, you can examine the information within the
* <code>propertyChanges()</code> method to initialize
* the start and end values of the effect.</p>
*
* @see mx.effects.effectClasses.PropertyChanges
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get propertyChanges():PropertyChanges;
/**
* @private
*/
function set propertyChanges(value:PropertyChanges):void;
//----------------------------------
// repeatCount
//----------------------------------
/**
* Number of times to repeat the effect.
* Possible values are any integer greater than or equal to 0.
*
* @default 1
* @see mx.effects.Effect#repeatCount
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get repeatCount():int;
/**
* @private
*/
function set repeatCount(value:int):void;
//----------------------------------
// repeatDelay
//----------------------------------
/**
* Amount of time, in milliseconds,
* to wait before repeating the effect.
*
* @default 0
* @see mx.effects.Effect#repeatDelay
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get repeatDelay():int;
/**
* @private
*/
function set repeatDelay(value:int):void;
//----------------------------------
// startDelay
//----------------------------------
/**
* Amount of time, in milliseconds,
* to wait before starting the effect.
* Possible values are any int greater than or equal to 0.
* If the effect is repeated by using the <code>repeatCount</code>
* property, the <code>startDelay</code> property is applied
* only the first time the effect is played.
*
* @default 0
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get startDelay():int;
/**
* @private
*/
function set startDelay(value:int):void;
//----------------------------------
// suspendBackgroundProcessing
//----------------------------------
/**
* If <code>true</code>, blocks all background processing
* while the effect is playing.
* Background processing includes measurement, layout,
* and processing responses that have arrived from the server.
*
* @default false
* @see mx.effects.Effect#suspendBackgroundProcessing
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get suspendBackgroundProcessing():Boolean;
/**
* @private
*/
function set suspendBackgroundProcessing(value:Boolean):void;
//----------------------------------
// target
//----------------------------------
/**
* The UIComponent object to which this effect is applied.
*
* @see mx.effects.Effect#target
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get target():Object;
/**
* @private
*/
function set target(value:Object):void;
//----------------------------------
// triggerEvent
//----------------------------------
/**
* The event, if any, which triggered the playing of the effect.
* This property is useful when an effect is assigned to
* multiple triggering events.
*
* <p>If the effect was played programmatically by a call to the
* <code>play()</code> method, rather than being triggered by an event,
* this property is <code>null</code>.</p>
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function get triggerEvent():Event;
/**
* @private
*/
function set triggerEvent(value:Event):void;
//--------------------------------------------------------------------------
//
// Methods
//
//--------------------------------------------------------------------------
/**
* This method is called if the effect was triggered by the EffectManager.
* This base class version saves the event that triggered the effect
* in the <code>triggerEvent</code> property.
* Each subclass should override this method.
*
* @param event The Event object that was dispatched
* to trigger the effect.
* For example, if the trigger was a mouseDownEffect, the event
* would be a MouseEvent with type equal to MouseEvent.MOUSEDOWN.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function initEffect(event:Event):void;
/**
* Plays the effect instance on the target after the
* <code>startDelay</code> period has elapsed.
* Called by the Effect class.
* Use this function instead of the <code>play()</code> method
* when starting an EffectInstance.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function startEffect():void;
/**
* Plays the effect instance on the target.
* Call the <code>startEffect()</code> method instead
* to make an effect start playing on an EffectInstance.
*
* <p>In a subclass of EffectInstance, you must override this method.
* The override must call the <code>super.play()</code> method
* so that an <code>effectStart</code> event is dispatched
* from the target.</p>
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function play():void;
/**
* Pauses the effect until you call the <code>resume()</code> method.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function pause():void;
/**
* Stops the effect, leaving the target in its current state.
* This method is invoked by a call
* to the <code>Effect.stop()</code> method.
* As part of its implementation, it calls
* the <code>finishEffect()</code> method.
*
* <p>The effect instance dispatches an <code>effectEnd</code> event
* when you call this method as part of ending the effect.</p>
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function stop():void;
/**
* Resumes the effect after it has been paused
* by a call to the <code>pause()</code> method.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function resume():void;
/**
* Plays the effect in reverse, starting from
* the current position of the effect.
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function reverse():void;
/**
* Interrupts an effect instance that is currently playing,
* and jumps immediately to the end of the effect.
* This method is invoked by a call
* to the <code>Effect.end()</code> method.
* As part of its implementation, it calls
* the <code>finishEffect()</code> method.
*
* <p>The effect instance dispatches an <code>effectEnd</code> event
* when you call this method as part of ending the effect.</p>
*
* <p>In a subclass of EffectInstance,
* you can optionally override this method
* As part of your override, you should call
* the <code>super.end()</code> method
* from the end of your override, after your logic.</p>
*
* @see mx.effects.Effect#end()
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function end():void;
/**
* Called by the <code>end()</code> method when the effect
* finishes playing.
* This function dispatches an <code>endEffect</code> event
* for the effect target.
*
* <p>You do not have to override this method in a subclass.
* You do not need to call this method when using effects,
* but you may need to call it if you create an effect subclass.</p>
*
* @see mx.events.EffectEvent
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function finishEffect():void;
/**
* Called after each iteration of a repeated effect finishes playing.
*
* <p>You do not have to override this method in a subclass.
* You do not need to call this method when using effects.</p>
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
function finishRepeat():void;
}
}