<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="../../../style.css" type="text/css" media="screen"><link rel="stylesheet" href="../../../print.css" type="text/css" media="print"><link rel="stylesheet" href="../../../override.css" type="text/css"><meta name="keywords" content="AnimateInstance,spark.effects.supportClasses.AnimateInstance,alphaFrom,alphaTo,args,autoCenterTransform,autoRemoveTarget,bitmapFilter,bitmapFrom,bitmapTo,colorFrom,colorPropertyName,colorTo,disableLayout,easer,functionName,heightBy,heightFrom,heightTo,index,initialized,interpolator,motionPaths,playheadTime,position,property,relativeTo,repeatBehavior,shader,shaderByteCode,shaderFilter,shaderProperties,transformCenter,value,widthBy,widthFrom,widthTo"><title>spark.effects.supportClasses.AnimateInstance</title></head><body><script language="javascript" type="text/javascript" src="../../../asdoc.js"></script><script language="javascript" type="text/javascript" src="../../../help.js"></script><script language="javascript" type="text/javascript" src="../../../cookies.js"></script><script language="javascript" type="text/javascript"><!--
				asdocTitle = 'AnimateInstance - ApacheFlex API Reference';
				var baseRef = '../../../';
				window.onload = configPage;
			--></script>
<script type="text/javascript">
			scrollToNameAnchor();
		</script><table class="titleTable" cellpadding="0" cellspacing="0" id="titleTable" style="display:none"><tr><td class="titleTableTitle" align="left">Apache Flex 4.16.1 API Reference </td><td class="titleTableTopNav" align="right"><a href="../../../package-summary.html" onclick="loadClassListFrame('../../../all-classes.html')">All Packages</a>&nbsp;|&nbsp;<a href="../../../class-summary.html" onclick="loadClassListFrame('../../../all-classes.html')">All Classes</a>&nbsp;|&nbsp;<a href="../../../all-index-A.html" onclick="loadClassListFrame('../../../index-list.html')">Index</a>&nbsp;|&nbsp;<a id="framesLink1" href="../../../index.html?spark/effects/supportClasses/AnimateInstance.html&amp;spark/effects/supportClasses/class-list.html">Frames</a><a id="noFramesLink1" style="display:none" href="" onclick="parent.location=document.location"> No Frames </a></td><td class="titleTableLogo" align="right" rowspan="3"><img src="../../../images/logo.jpg" class="logoImage" alt="AdobeLogo" title="AdobeLogo"></td></tr><tr class="titleTableRow2"><td class="titleTableSubTitle" id="subTitle" align="left">AnimateInstance</td><td class="titleTableSubNav" id="subNav" align="right"><a href="#propertySummary">Properties</a>&nbsp;| <a href="#methodSummary">Methods</a></td></tr><tr class="titleTableRow3"><td colspan="3">&nbsp;</td></tr></table><script language="javascript" type="text/javascript" xml:space="preserve">
				<!--
				
					if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("AnimateInstance"); titleBar_setSubNav(false,true,false,false,false,false,false,false,true,false,false	,false,false,false,false,false);}	
				-->
			</script><div xmlns:fn="http://www.w3.org/2005/xpath-functions" class="MainContent"><table class="classHeaderTable" cellpadding="0" cellspacing="0"><tr><td class="classHeaderTableLabel">Package</td><td><a href="package-detail.html" onclick="javascript:loadClassListFrame('class-list.html')">spark.effects.supportClasses</a></td></tr><tr><td class="classHeaderTableLabel">Class</td><td class="classSignature">public  class  AnimateInstance</td></tr><tr><td class="classHeaderTableLabel">Inheritance</td><td class="inheritanceList">AnimateInstance  <img src="../../../images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> <a href="../../../mx/effects/EffectInstance.html">EffectInstance</a> <img src="../../../images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> flash.events.EventDispatcher</td></tr><tr><td class="classHeaderTableLabel">Implements</td><td> <a href="../../../spark/effects/animation/IAnimationTarget.html">IAnimationTarget</a></td></tr><tr><td class="classHeaderTableLabel">Subclasses</td><td> <a href="../../../spark/effects/supportClasses/AnimateColorInstance.html">AnimateColorInstance</a>,  <a href="../../../spark/effects/supportClasses/AnimateFilterInstance.html">AnimateFilterInstance</a>,  <a href="../../../spark/effects/supportClasses/AnimateTransformInstance.html">AnimateTransformInstance</a>,  <a href="../../../spark/effects/supportClasses/AnimateTransitionShaderInstance.html">AnimateTransitionShaderInstance</a>,  <a href="../../../spark/effects/supportClasses/FadeInstance.html">FadeInstance</a>,  <a href="../../../spark/effects/supportClasses/ResizeInstance.html">ResizeInstance</a></td></tr></table><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p></p><p></p>
  The AnimateInstance class implements the instance class for the
  Animate effect. Flex creates an instance of this class when
  it plays a Animate effect; you do not create one yourself.
   <p></p><p><span class="classHeaderTableLabel">See also</span></p><div class="seeAlso"><a href="../../../spark/effects/Animate.html" target="">spark.effects.Animate</a></div><br/><hr></div><a name="propertySummary"></a><div class="summarySection"><div class="summaryTableTitle">Public Properties</div><div class="showHideLinks"><div id="hideInheritedProperty" class="hideInheritedProperty"><a class="showHideLink" href="#propertySummary" onclick="javascript:setInheritedVisible(false,'Property');"><img class="showHideLinkImage" src="../../../images/expanded.gif"> Hide Inherited Public Properties</a></div><div id="showInheritedProperty" class="showInheritedProperty"><a class="showHideLink" href="#propertySummary" onclick="javascript:setInheritedVisible(true,'Property');"><img class="showHideLinkImage" src="../../../images/collapsed.gif"> Show Inherited Public Properties</a></div></div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableProperty"><tr><th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#className" class="signatureLink">className</a> : String<div class="summaryTableDescription">[read-only] 
      The name of the effect class, such as "FadeInstance".</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#disableLayout" class="signatureLink">disableLayout</a> : Boolean<div class="summaryTableDescription">
     If true, the effect disables layout on its
     targets' parent containers, setting the containers autoLayout
     property to false, and also disables any layout constraints on the 
     target objects.</div></td><td class="summaryTableOwnerCol">AnimateInstance</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#duration" class="signatureLink">duration</a> : Number<div class="summaryTableDescription"> 
      The duration of the effect, in milliseconds.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#easer" class="signatureLink">easer</a> : <a href="../../../spark/effects/easing/IEaser.html">IEaser</a><div class="summaryTableDescription">
     The easing behavior for this effect.</div></td><td class="summaryTableOwnerCol">AnimateInstance</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#effect" class="signatureLink">effect</a> : <a href="../../../mx/effects/IEffect.html">IEffect</a><div class="summaryTableDescription">
      The IEffect object that created this IEffectInstance object.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#effectTargetHost" class="signatureLink">effectTargetHost</a> : <a href="../../../mx/effects/IEffectTargetHost.html">IEffectTargetHost</a><div class="summaryTableDescription">
      A property that lets you access the target
      list-based control of a data effect.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#hideFocusRing" class="signatureLink">hideFocusRing</a> : Boolean<div class="summaryTableDescription">
      Determines whether the effect should hide
      the focus ring when starting the effect.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#interpolator" class="signatureLink">interpolator</a> : <a href="../../../spark/effects/interpolation/IInterpolator.html">IInterpolator</a><div class="summaryTableDescription">
     The interpolator used by this effect to calculate values between
     the start and end values of a property.</div></td><td class="summaryTableOwnerCol">AnimateInstance</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#motionPaths" class="signatureLink">motionPaths</a> : Vector.&lt;<a href="../../../spark/effects/animation/MotionPath.html">MotionPath</a>&gt;<div class="summaryTableDescription">
     A Vector of MotionPath objects, each of which holds the
     name of a property being animated and the values that the property
     takes during the animation.</div></td><td class="summaryTableOwnerCol">AnimateInstance</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#playheadTime" class="signatureLink">playheadTime</a> : Number<div class="summaryTableDescription">[override] 
      
      Current time position of the effect.</div></td><td class="summaryTableOwnerCol">AnimateInstance</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#propertyChanges" class="signatureLink">propertyChanges</a> : <a href="../../../mx/effects/effectClasses/PropertyChanges.html">PropertyChanges</a><div class="summaryTableDescription">
      Specifies the PropertyChanges object containing
      the start and end values for the set of properties
      relevant to the effect's targets.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#repeatBehavior" class="signatureLink">repeatBehavior</a> : String<div class="summaryTableDescription">
     The behavior of a repeating effect, which means an effect
     with repeatCount equal to either 0 or &gt; 1.</div></td><td class="summaryTableOwnerCol">AnimateInstance</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#repeatCount" class="signatureLink">repeatCount</a> : int<div class="summaryTableDescription">
      Number of times to repeat the effect.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#repeatDelay" class="signatureLink">repeatDelay</a> : int<div class="summaryTableDescription">
      Amount of time, in milliseconds,
      to wait before repeating the effect.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#startDelay" class="signatureLink">startDelay</a> : int<div class="summaryTableDescription">
      Amount of time, in milliseconds,
      to wait before starting the effect.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#suspendBackgroundProcessing" class="signatureLink">suspendBackgroundProcessing</a> : Boolean<div class="summaryTableDescription">
      If true, blocks all background processing
      while the effect is playing.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#target" class="signatureLink">target</a> : Object<div class="summaryTableDescription">
      The UIComponent object to which this effect is applied.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#triggerEvent" class="signatureLink">triggerEvent</a> : Event<div class="summaryTableDescription">
      The event, if any, which triggered the playing of the effect.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr></table></div><a name="protectedPropertySummary"></a><div class="summarySection"><div class="summaryTableTitle">Protected Properties</div><div class="showHideLinks"><div id="hideInheritedProtectedProperty" class="hideInheritedProtectedProperty"><a class="showHideLink" href="#protectedPropertySummary" onclick="javascript:setInheritedVisible(false,'ProtectedProperty');"><img class="showHideLinkImage" src="../../../images/expanded.gif"> Hide Inherited Protected Properties</a></div><div id="showInheritedProtectedProperty" class="showInheritedProtectedProperty"><a class="showHideLink" href="#protectedPropertySummary" onclick="javascript:setInheritedVisible(true,'ProtectedProperty');"><img class="showHideLinkImage" src="../../../images/collapsed.gif"> Show Inherited Protected Properties</a></div></div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableProtectedProperty"><tr><th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#autoRemoveTarget" class="signatureLink">autoRemoveTarget</a> : Boolean = false<div class="summaryTableDescription">
      If true, the effect retains its target 
      during a transition and removes it when finished.</div></td><td class="summaryTableOwnerCol">AnimateInstance</td></tr><tr class="hideInheritedProtectedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../../mx/effects/EffectInstance.html#playCount" class="signatureLink">playCount</a> : int = 0<div class="summaryTableDescription"> 
      Number of times that the instance has been played.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr></table></div><a name="methodSummary"></a><div class="summarySection"><div class="summaryTableTitle">Public Methods </div><div class="showHideLinks"><div id="hideInheritedMethod" class="hideInheritedMethod"><a class="showHideLink" href="#methodSummary" onclick="javascript:setInheritedVisible(false,'Method');"><img class="showHideLinkImage" src="../../../images/expanded.gif"> Hide Inherited Public Methods</a></div><div id="showInheritedMethod" class="showInheritedMethod"><a class="showHideLink" href="#methodSummary" onclick="javascript:setInheritedVisible(true,'Method');"><img class="showHideLinkImage" src="../../../images/collapsed.gif"> Show Inherited Public Methods</a></div></div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableMethod"><tr><th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#AnimateInstance()" class="signatureLink">AnimateInstance</a>(target:Object)</div><div class="summaryTableDescription">
      Constructor.</div></td><td class="summaryTableOwnerCol">AnimateInstance</td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#end()" class="signatureLink">end</a>():void</div><div class="summaryTableDescription">
      Interrupts an effect instance that is currently playing,
      and jumps immediately to the end of the effect.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#finishEffect()" class="signatureLink">finishEffect</a>():void</div><div class="summaryTableDescription">
      Called by the end() method when the effect
      finishes playing.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#finishRepeat()" class="signatureLink">finishRepeat</a>():void</div><div class="summaryTableDescription">
      Called after each iteration of a repeated effect finishes playing.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#initEffect()" class="signatureLink">initEffect</a>(event:Event):void</div><div class="summaryTableDescription">
      This method is called if the effect was triggered by the EffectManager.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#pause()" class="signatureLink">pause</a>():void</div><div class="summaryTableDescription">
      Pauses the effect until you call the resume() method.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#play()" class="signatureLink">play</a>():void</div><div class="summaryTableDescription">
      Plays the effect instance on the target.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#resume()" class="signatureLink">resume</a>():void</div><div class="summaryTableDescription">
      Resumes the effect after it has been paused 
      by a call to the pause() method.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#reverse()" class="signatureLink">reverse</a>():void</div><div class="summaryTableDescription">
      Plays the effect in reverse, starting from
      the current position of the effect.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#startEffect()" class="signatureLink">startEffect</a>():void</div><div class="summaryTableDescription">
      Plays the effect instance on the target after the
      startDelay period has elapsed.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../../mx/effects/EffectInstance.html#stop()" class="signatureLink">stop</a>():void</div><div class="summaryTableDescription">
      Stops the effect, leaving the target in its current state.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/effects/EffectInstance.html">EffectInstance</a></td></tr></table></div><script language="javascript" type="text/javascript"><!--
										showHideInherited();
										--></script><div class="MainContent"><div class="detailSectionHeader">Property Detail</div><a name="propertyDetail"></a><a name="autoRemoveTarget"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">autoRemoveTarget</td><td class="detailHeaderType">property</td></tr></table><div class="detailBody"><code>protected var autoRemoveTarget:Boolean = false</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      If <code>true</code>, the effect retains its target 
      during a transition and removes it when finished. 
      This capability applies specifically to effects like
      Fade which act on targets that go away at the end of the
      transition and removes the need to supply a RemoveAction or similar
      effect to manually keep the item around and remove it when the
      transition completes. 
     
      <p>To use this capability, subclasses
      should set this variable to <code>true</code> and also expose the <code>parent</code>
      property in their <code>affectedProperties</code> Array so 
      that the effect instance has enough information about the target
      and container to do the job.</p>
      
      </p></div><a name="propertyDetail"></a><a name="disableLayout"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">disableLayout</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>public var disableLayout:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
     If <code>true</code>, the effect disables layout on its
     targets' parent containers, setting the containers <code>autoLayout</code>
     property to false, and also disables any layout constraints on the 
     target objects. These properties are restored when the effect
     finishes.
     
     </p></div><a name="propertyDetail"></a><a name="easer"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">easer</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>easer:<a href="../../../spark/effects/easing/IEaser.html">IEaser</a></code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
     The easing behavior for this effect. 
     This IEaser object is used to convert the elapsed fraction of 
     the animation into an eased fraction, which is then used to
     calculate the value at that eased elapsed fraction.
     
     <p>Note that it is possible to have easing at both the effect
     level and the Keyframe level (where Keyframes hold the values/times
     used in the MotionPath structures).
     These easing behaviors build on each other. 
     The <code>easer</code> controls the easing of the overall effect.
     The Keyframe controls the easing in any particular interval of the animation.
     By default, the easing for Animate is non-linear (Sine(.5)).
     The easing for Keyframes is linear. If you desire an effect with easing
     at the keyframe level instead, you can set the easing of the
     effect to linear, and then set the easing specifically on the Keyframes.</p>
     
     </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get easer():<a href="../../../spark/effects/easing/IEaser.html">IEaser</a></code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set easer(value:<a href="../../../spark/effects/easing/IEaser.html">IEaser</a>):void</code><br/></div><a name="propertyDetail"></a><a name="interpolator"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">interpolator</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>interpolator:<a href="../../../spark/effects/interpolation/IInterpolator.html">IInterpolator</a></code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
     The interpolator used by this effect to calculate values between
     the start and end values of a property. 
     By default, the NumberInterpolator class handles interpolation 
     or, in the case of the start
     and end values being Arrays or Vectors, by the 
     MultiValueInterpolator class.
     Interpolation of other types, or of Numbers that should be interpolated
     differently, such as <code>uint</code> values that hold color
     channel information, can be handled by supplying a different
     interpolator.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get interpolator():<a href="../../../spark/effects/interpolation/IInterpolator.html">IInterpolator</a></code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set interpolator(value:<a href="../../../spark/effects/interpolation/IInterpolator.html">IInterpolator</a>):void</code><br/></div><a name="propertyDetail"></a><a name="motionPaths"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">motionPaths</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>motionPaths:Vector.&lt;<a href="../../../spark/effects/animation/MotionPath.html">MotionPath</a>&gt;</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
     A Vector of MotionPath objects, each of which holds the
     name of a property being animated and the values that the property
     takes during the animation. 
     This Vector takes precedence over
     any properties declared in subclasses of Animate.
     For example, if this Array is set directly on a Move effect, 
     then any properties of the Move effect, such as <code>xFrom</code>, are ignored. 
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get motionPaths():Vector.&lt;<a href="../../../spark/effects/animation/MotionPath.html">MotionPath</a>&gt;</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set motionPaths(value:Vector.&lt;<a href="../../../spark/effects/animation/MotionPath.html">MotionPath</a>&gt;):void</code><br/></div><a name="propertyDetail"></a><a name="playheadTime"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">playheadTime</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>playheadTime:Number</code>[override] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      
      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>.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get playheadTime():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set playheadTime(value:Number):void</code><br/></div><a name="propertyDetail"></a><a name="repeatBehavior"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">repeatBehavior</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>repeatBehavior:String</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
     The behavior of a repeating effect, which means an effect
     with <code>repeatCount</code> equal to either 0 or > 1. This
     value should be either <code>RepeatBehavior.LOOP</code>, which means the animation
     repeats in the same order each time, or <code>RepeatBehavior.REVERSE</code>,
     which means the animation reverses direction on each iteration.
     
     </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get repeatBehavior():String</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set repeatBehavior(value:String):void</code><br/></div><a name="constructorDetail"></a><div class="detailSectionHeader">Constructor Detail</div><a name="AnimateInstance()"></a><a name="AnimateInstance(Object)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">AnimateInstance</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">Constructor</td></tr></table><div class="detailBody"><code>public function AnimateInstance(target:Object)</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p>
      Constructor.
           </p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">target</span>:Object</code> &mdash; The Object to animate with this effect.
      
      </td></tr></table></div><br/><br/><hr><br/><p></p><center class="copyright"><footer>The Apache Software Foundation</footer><br/>Wed Nov 15 2017, 09:50 AM +01:00  </center></div></body></html><!--The Apache Software Foundation<br/>Wed Nov 15 2017, 09:50 AM +01:00  -->