//////////////////////////////////////////////////////////////////////////////// // // 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.states { import mx.effects.IEffect; [DefaultProperty("effect")] /** * The Transition class defines a set of effects that play in response * to a change of view state. While a view state definition * defines how to change states, a transition defines the order in which * visual changes occur during the state change. * *

To define a transition, you set the transitions property of an Application * to an Array of Transition objects.

* *

You use the toState and fromState properties of * the Transition class to specify the state changes that trigger the transition. * By default, both the fromState and toState properties * are set to "*", meaning apply the transition to any changes to the view state.

* *

You can use the fromState property to explicitly specify a * view state that your are changing from, and the toState property * to explicitly specify a view state that you are changing to. * If a state change matches two transitions, the toState property * takes precedence over the fromState property. If more than one * transition match, Flex uses the first definition in the transition array.

* *

You use the effect property to specify the Effect object to play * when you apply the transition. Typically, this is a composite effect object, * such as the Parallel or Sequence effect, that contains multiple effects, * as the following example shows:

 *
 *  <mx:Transition id="myTransition" fromState="*" toState="*">
 *    <mx:Parallel>
 *        ...
 *    </mx:Parallel>
 *  </mx:Transition>
 *  
* * @mxml * *

The <mx:Transition> tag * defines the following attributes:

* *
 *  <mx:Transition
 *    Properties
 *    id="ID"
 *    effect=""
 *    fromState="*"
 *    toState="*"
 *    autoReverse="false"
 *  />
 *  
* * @see mx.effects.AddChildAction * @see mx.effects.RemoveChildAction * @see mx.effects.SetPropertyAction * @see mx.effects.SetStyleAction * * @includeExample examples/TransitionExample.mxml * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public class Transition { include "../core/Version.as"; //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public function Transition() { super(); } //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // effect //---------------------------------- /** * The IEffect object to play when you apply the transition. Typically, * this is a composite effect object, such as the Parallel or Sequence effect, * that contains multiple effects. * *

The effect property is the default property of the * Transition class. You can omit the <mx:effect> tag * if you use MXML tag syntax.

* * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var effect:IEffect; //---------------------------------- // fromState //---------------------------------- [Inspectable(category="General")] /** * A String specifying the view state that your are changing from when * you apply the transition. The default value is "*", meaning any view state. * *

You can set this property to an empty string, "", * which corresponds to the base view state.

* * @default "*" * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var fromState:String = "*"; //---------------------------------- // toState //---------------------------------- [Inspectable(category="General")] /** * A String specifying the view state that you are changing to when * you apply the transition. The default value is "*", meaning any view state. * *

You can set this property to an empty string, "", * which corresponds to the base view state.

* * @default "*" * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var toState:String = "*"; /** * Set to true to specify that this transition applies * to both the forward and reverse view state changes. * Therefore, use this transition on a change from view state A to * view state B, and on the change from B to A. * *

While the transition from view state A to view state B is playing, * the reverse transition can occur to interrupt the current transition. * The reverse transition always halts the current transition at * its current location. * That is, the reverse transition always plays as if * the interruptionBehavior property was set to stop, * regardless of the real value of interruptionBehavior.

* *

This property is only checked when the new transition is going in the * exact opposite direction of the currently playing one. That is, if * a transition is playing between states A and B and then a transition * to return to A is started.

* *

If a transition uses the toState and fromState * properties to explicitly handle the transition from view state B to A, * then Flex ignores the autoReverse property.

* * @default false * * @see Transition#interruptionBehavior * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var autoReverse:Boolean = false; /** * Flex does not support the playing of multiple transitions simultaneously. * If a transition is currently playing when a new transition occurs, * the current transition is interrupted. * This property controls how the current transition behaves when interrupted. * *

By default, the current transition ends, which snaps all effects in * the transition to their end values. * This corresponds to a property value of end. * If the value of this property is stop, the current transition * halts at its current location. * The new transition start playing from the halt location of * the previous transition.

* *

The value of stop can smooth out the appearance of an * interrupted transition. * That is because the user does not see the current transition snap * to its end state before the new transition begins.

* *

In some cases, the interrupting transition can be the reverse of * the current transition. * For example, while the transition from view state A to view state B * is playing, the reverse transition occurs to interrupt the current transition. * If you set the autoReverse property of a transition instance * to true, you can use the same transition to handle both * the forward and reverse transitions. * When the interrupting transition is the reverse transition of the * current transition and has autoReverse set to true, * the interrupting transition runs as if the * interruptionBehavior property was set to stop, * regardless of the real value of interruptionBehavior.

* *

The mx.states.InterruptionBehavior class defines * the possible values for this property.

* * @default end * * @see Transition#autoReverse * @see mx.states.InterruptionBehavior * * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.5 * @productversion Flex 4.5 */ [Inspectable(category="General", enumeration="end,stop", defaultValue="end")] public var interruptionBehavior:String = InterruptionBehavior.END; } }