////////////////////////////////////////////////////////////////////////////////
//
// 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 mx.effects.effectClasses.TweenEffectInstance;
import mx.events.TweenEvent;
import flash.events.EventDispatcher;
/**
* Dispatched when the tween effect starts, which corresponds to the
* first call to the onTweenUpdate()
method.
* Flex also dispatches the first tweenUpdate
event
* for the effect at the same time.
*
*
The Effect.effectStart
event is dispatched
* before the tweenStart
event.
TweenEffectInstance.onTweenUpdate()
method.
*
* @eventType mx.events.TweenEvent.TWEEN_UPDATE
*
* @langversion 3.0
* @playerversion Flash 9
* @playerversion AIR 1.1
* @productversion Flex 3
*/
[Event(name="tweenUpdate", type="mx.events.TweenEvent")]
/**
* Dispatched when the tween effect ends.
* This event corresponds to a call to
* the TweenEffectInstance.onTweenEnd()
method.
*
* When a tween effect plays a single time, this event occurs
* at the same time as an effectEnd
event.
* If you configure the tween effect to repeat,
* it occurs at the end of every repetition of the effect,
* and the endEffect
event occurs
* after the effect plays for the final time.
You create a subclass of the TweenEffect class to define * an effect that plays an animation over a period of time. * For example, the Resize effect modifies the size of its target * over a specified duration.
* * @mxml * *The <mx:TweenEffect>
tag
* inherits all of the tag attributes of its superclass,
* and adds the following tag attributes:
* <mx:TagName * Properties * easingFunction="easing function name; no default" * * Events * tweenEnd="No default" * /> ** * @see mx.effects.Tween * @see mx.effects.effectClasses.TweenEffectInstance * * @includeExample examples/SimpleTweenEffectExample.mxml * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public class TweenEffect extends Effect { include "../core/Version.as"; //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor. * * @param target The Object to animate with this effect. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public function TweenEffect(target:Object = null) { super(target); instanceClass = TweenEffectInstance; } //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // easingFunction //---------------------------------- /** * The easing function for the animation. * The easing function is used to interpolate between the initial value * and the final value. * A trivial easing function would simply do linear interpolation, * but more sophisticated easing functions create the illusion of * acceleration and deceleration, which makes the animation seem * more natural. * *
If no easing function is specified, an easing function based
* on the Math.sin()
method is used.
The easing function follows the function signature popularized * by Robert Penner. * The function accepts four arguments. * The first argument is the "current time", * where the animation start time is 0. * The second argument is the initial value * at the beginning of the animation (a Number). * The third argument is the ending value minus the initial value. * The fourth argument is the duration of the animation. * The return value is the interpolated value for the current time. * This is usually a value between the initial value * and the ending value.
* *The value of this property must be a function object.
* *Flex includes a set of easing functions * in the mx.effects.easing package.
* * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public var easingFunction:Function = null; //-------------------------------------------------------------------------- // // Overridden methods // //-------------------------------------------------------------------------- /** * @private */ override protected function initInstance(instance:IEffectInstance):void { super.initInstance(instance); TweenEffectInstance(instance).easingFunction = easingFunction; EventDispatcher(instance).addEventListener(TweenEvent.TWEEN_START, tweenEventHandler); EventDispatcher(instance).addEventListener(TweenEvent.TWEEN_UPDATE, tweenEventHandler); EventDispatcher(instance).addEventListener(TweenEvent.TWEEN_END, tweenEventHandler); } //-------------------------------------------------------------------------- // // Event handlers // //-------------------------------------------------------------------------- /** * Called when the TweenEffect dispatches a TweenEvent. * If you override this method, ensure that you call the super method. * * @param event An event object of type TweenEvent. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ protected function tweenEventHandler(event:TweenEvent):void { dispatchEvent(event); } } }