You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2020/09/26 17:48:18 UTC

[royale-asjs] branch develop updated (aee0907 -> dd88c5c)

This is an automated email from the ASF dual-hosted git repository.

yishayw pushed a change to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git.


    from aee0907  Added some spark animation infra
     new 783da6f  Add Resize effect stub
     new dd88c5c  Adding SetAction

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |   1 +
 .../effectClasses/ActionEffectInstance.as}         | 144 ++++----
 .../src/main/royale/SparkRoyaleClasses.as          |   4 +-
 .../spark/effects/supportClasses/ResizeInstance.as | 373 +++++++++++++++++++++
 .../effects/supportClasses/SetActionInstance.as    | 257 ++++++++++++++
 5 files changed, 710 insertions(+), 69 deletions(-)
 copy frameworks/projects/MXRoyale/src/main/royale/mx/{controls/listClasses/ListBaseSelectionData.as => effects/effectClasses/ActionEffectInstance.as} (51%)
 create mode 100644 frameworks/projects/SparkRoyale/src/main/royale/spark/effects/supportClasses/ResizeInstance.as
 create mode 100644 frameworks/projects/SparkRoyale/src/main/royale/spark/effects/supportClasses/SetActionInstance.as


[royale-asjs] 01/02: Add Resize effect stub

Posted by yi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

yishayw pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 783da6f714eca8d2e76e7e2c9d0ba0a12c9b9e2e
Author: Yishay Weiss <yi...@yell.com>
AuthorDate: Sat Sep 26 18:03:07 2020 +0100

    Add Resize effect stub
---
 .../src/main/royale/SparkRoyaleClasses.as          |   2 +-
 .../spark/effects/supportClasses/ResizeInstance.as | 373 +++++++++++++++++++++
 2 files changed, 374 insertions(+), 1 deletion(-)

diff --git a/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as b/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
index b309abf..e643b18 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
@@ -109,7 +109,7 @@ import spark.components.IItemRenderer; IItemRenderer;
 import spark.components.supportClasses.ButtonBarHorizontalLayout; ButtonBarHorizontalLayout;
 import spark.effects.AnimateColor; AnimateColor; // needed
 import spark.effects.Fade; Fade;
-//import spark.effects.Resize; Resize; // needed
+import spark.effects.Resize; Resize; // needed
 //import spark.effects.SetAction; SetAction; // needed
 import spark.effects.easing.IEaser; IEaser;
 //import spark.effects.easing.Power; Power; // needed
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/supportClasses/ResizeInstance.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/supportClasses/ResizeInstance.as
new file mode 100644
index 0000000..dcd1d06
--- /dev/null
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/supportClasses/ResizeInstance.as
@@ -0,0 +1,373 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 spark.effects.supportClasses
+{
+import __AS3__.vec.Vector;
+
+import mx.core.IUIComponent;
+
+import spark.effects.animation.Keyframe;
+import spark.effects.animation.MotionPath;
+import spark.effects.animation.SimpleMotionPath;
+    
+/**
+ *  The ResizeInstance class implements the instance class
+ *  for the Resize effect.
+ *  Flex creates an instance of this class when it plays a Resize
+ *  effect; you do not create one yourself.
+ *
+ *  @see spark.effects.Resize
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */  
+public class ResizeInstance extends AnimateInstance
+{
+    //include "../../core/Version.as";
+
+    /**
+     *  Constructor.
+     *
+     *  @param target The Object to animate with this effect.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function ResizeInstance(target:Object)
+    {
+        super(target);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Variables
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    private var heightSet:Boolean;
+    
+    /**
+     *  @private
+     */
+    private var widthSet:Boolean;
+    
+    /**
+     *  @private
+     */
+    private var explicitWidthSet:Boolean;
+    
+    /**
+     *  @private
+     */
+    private var explicitHeightSet:Boolean;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  heightBy
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the heightBy property.
+     */
+    private var _heightBy:Number;
+    
+    /** 
+     *  Number of pixels by which to modify the height of the component.
+     *  Values may be negative.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get heightBy():Number
+    {
+        return _heightBy;
+    }   
+    
+    /**
+     *  @private
+     */
+    public function set heightBy(value:Number):void
+    {
+        _heightBy = value;
+        heightSet = !isNaN(value);
+    }
+    
+    //----------------------------------
+    //  heightFrom
+    //----------------------------------
+
+    /** 
+     *  @copy spark.effects.Resize#heightFrom
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public var heightFrom:Number;
+
+    //----------------------------------
+    //  heightTo
+    //----------------------------------
+    
+    /**
+     *  @private
+     *  Storage for the heightTo property.
+     */
+    private var _heightTo:Number;
+    
+    /** 
+     *  @copy spark.effects.Resize#heightTo
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get heightTo():Number
+    {
+        return _heightTo;
+    }   
+    
+    /**
+     *  @private
+     */
+    public function set heightTo(value:Number):void
+    {
+        _heightTo = value;
+        heightSet = !isNaN(value);
+    }
+    
+    //----------------------------------
+    //  widthBy
+    //----------------------------------
+    
+    /**
+     *  @private
+     *  Storage for the widthBy property.
+     */
+    private var _widthBy:Number;
+
+    /** 
+     *  @copy spark.effects.Resize#widthBy
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */ 
+    public function get widthBy():Number
+    {
+        return _widthBy;
+    }   
+    
+    /**
+     *  @private
+     */
+    public function set widthBy(value:Number):void
+    {
+        _widthBy = value;
+        widthSet = !isNaN(value);
+    }
+
+    //----------------------------------
+    //  widthFrom
+    //----------------------------------
+
+    /** 
+     *  @copy spark.effects.Resize#widthFrom
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public var widthFrom:Number;
+
+    //----------------------------------
+    //  widthTo
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the widthTo property.
+     */
+    private var _widthTo:Number;
+    
+    /** 
+     *  @copy spark.effects.Resize#widthTo
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get widthTo():Number
+    {
+        return _widthTo;
+    }   
+    
+    /**
+     *  @private
+     */
+    public function set widthTo(value:Number):void
+    {
+        _widthTo = value;
+        widthSet = !isNaN(value);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    override public function play():void
+    {
+        calculateDimensionChanges();
+
+        motionPaths = new <MotionPath>[new MotionPath("width"),
+            new MotionPath("height")];
+        motionPaths[0].keyframes = new <Keyframe>[new Keyframe(0, widthFrom), 
+            new Keyframe(duration, widthTo, widthBy)];
+        motionPaths[1].keyframes = new <Keyframe>[new Keyframe(0, heightFrom), 
+            new Keyframe(duration, heightTo, heightBy)];
+                
+        // Also animate any size-related constraints that change between
+        // transition states
+        if (propertyChanges && !disableLayout)
+        {
+            var wStart:* = propertyChanges.start["width"];
+            var wEnd:* = propertyChanges.end["width"];
+            var hStart:* = propertyChanges.start["height"];
+            var hEnd:* = propertyChanges.end["height"];
+            if (wStart !== undefined && wEnd != undefined && (wStart != wEnd))
+            {
+                setupConstraintAnimation("left");
+                setupConstraintAnimation("right");
+            }
+            if (hStart !== undefined && hEnd != undefined && (hStart != hEnd))
+            {
+                setupConstraintAnimation("top");
+                setupConstraintAnimation("bottom");
+            }
+        }
+        
+        super.play();        
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    private function calculateDimensionChanges():void
+    {
+        var explicitWidth:* = propertyChanges ? propertyChanges.end["explicitWidth"] : undefined;
+        var explicitHeight:* = propertyChanges ? propertyChanges.end["explicitHeight"] : undefined;
+        var percentWidth:* = propertyChanges ? propertyChanges.end["percentWidth"] : undefined;
+        var percentHeight:* = propertyChanges ? propertyChanges.end["percentHeight"] : undefined;
+
+        // The user may have supplied some combination of widthFrom,
+        // widthTo, and widthBy. If either widthFrom or widthTo is
+        // not explicitly defined, calculate its value based on the
+        // other two values.
+        if (isNaN(widthFrom))
+        {
+            if (!isNaN(widthTo) && !isNaN(widthBy))
+                widthFrom = widthTo - widthBy;
+        }
+        if (isNaN(widthTo))
+        {       
+            if (isNaN(widthBy) &&
+                propertyChanges &&
+                ((propertyChanges.end["width"] !== undefined &&
+                  propertyChanges.end["width"] != propertyChanges.start["width"]) ||
+                 (explicitWidth !== undefined && !isNaN(explicitWidth))))
+            {
+                if (explicitWidth !== undefined && !isNaN(explicitWidth))
+                {
+                    explicitWidthSet = true;
+                    _widthTo = explicitWidth;
+                }
+                else
+                {
+                    _widthTo = propertyChanges.end["width"];
+                }
+            }
+            else
+            {
+                if (!isNaN(widthBy) && !isNaN(widthFrom))
+                    _widthTo = widthFrom + widthBy;
+            }
+        }
+
+        // Ditto for heightFrom, heightTo, and heightBy.
+        if (isNaN(heightFrom))
+        {
+            if (!isNaN(heightTo) && !isNaN(heightBy))
+                heightFrom = heightTo - heightBy;
+        }
+        if (isNaN(heightTo))
+        {       
+            if (isNaN(heightBy) &&
+                propertyChanges &&
+                ((propertyChanges.end["height"] !== undefined &&
+                  propertyChanges.end["height"] != propertyChanges.start["height"]) ||
+                 (explicitHeight !== undefined && !isNaN(explicitHeight))))
+            {
+                if (explicitHeight !== undefined && !isNaN(explicitHeight))
+                {
+                    explicitHeightSet = true;
+                    _heightTo = explicitHeight;
+                }
+                else
+                {
+                    _heightTo = propertyChanges.end["height"];
+                }
+            }
+            else
+            {
+                if (!isNaN(heightBy) && !isNaN(heightFrom))
+                    _heightTo = heightFrom + heightBy;
+            }
+        }
+    }
+
+}
+}


[royale-asjs] 02/02: Adding SetAction

Posted by yi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

yishayw pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit dd88c5c1831fa282dce80fd9ed0f1f252c2fe673
Author: Yishay Weiss <yi...@yell.com>
AuthorDate: Sat Sep 26 18:47:56 2020 +0100

    Adding SetAction
---
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |   1 +
 .../effects/effectClasses/ActionEffectInstance.as  | 157 +++++++++++++
 .../src/main/royale/SparkRoyaleClasses.as          |   2 +-
 .../effects/supportClasses/SetActionInstance.as    | 257 +++++++++++++++++++++
 4 files changed, 416 insertions(+), 1 deletion(-)

diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index 57be249..daf563c 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -103,6 +103,7 @@ internal class MXRoyaleClasses
     import mx.controls.advancedDataGridClasses.DataItemRendererFactoryForICollectionViewAdvancedDataGridData; DataItemRendererFactoryForICollectionViewAdvancedDataGridData;
 	import mx.charts.chartClasses.RenderData; RenderData;
 	import mx.effects.EffectInstance; EffectInstance;
+	import mx.effects.effectClasses.ActionEffectInstance; ActionEffectInstance;
 	import mx.effects.effectClasses.CompositeEffectInstance; CompositeEffectInstance;
 	import mx.charts.HitData; HitData;
 
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/effects/effectClasses/ActionEffectInstance.as b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/effectClasses/ActionEffectInstance.as
new file mode 100644
index 0000000..3e5d535
--- /dev/null
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/effects/effectClasses/ActionEffectInstance.as
@@ -0,0 +1,157 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.effectClasses
+{
+
+import mx.core.mx_internal;
+import mx.effects.EffectInstance;
+
+use namespace mx_internal;
+
+/**
+ *  The ActionEffectInstance class is the superclass for all 
+ *  action effect instance classes.
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */  
+ public class ActionEffectInstance extends EffectInstance
+{
+    //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 ActionEffectInstance(target:Object)
+	{
+		super(target);
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Variables
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Indicates whether the effect has been played (<code>true</code>), 
+	 *  or not (<code>false</code>). 
+	 *
+	 *  <p>The <code>play()</code> method sets this property to 
+	 *  <code>true</code> after the effect plays;
+	 *  you do not set it directly.</p> 
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	protected var playedAction:Boolean = false;
+	
+	/**
+	 *  @private
+	 */
+	private var _startValue:*;
+	
+	//--------------------------------------------------------------------------
+	//
+	//  Methods
+	//
+	//--------------------------------------------------------------------------
+	
+	/**
+	 *  Subclasses implement this method to save the starting state
+	 *  before the effect plays.
+	 *
+	 *  @return Returns the starting state value.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	protected function saveStartValue():*
+	{
+	}
+	
+	/**
+	 *  Returns the starting state value that was saved by the
+	 *  <code>saveStartValue()</code> method.
+	 *
+	 *  @return Returns the starting state value.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
+	 */
+	protected function getStartValue():*
+	{
+		return _startValue;
+	}
+		
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 */
+	override public function play():void
+	{
+		super.play();	
+		
+		// Don't save the value if we are playing in reverse.
+		if (!playReversed)
+			_startValue = saveStartValue();
+		
+		playedAction = true;
+	}
+	
+	/**
+	 *  @private
+	 */
+    override public function end():void
+    {
+    	if (!playedAction)
+    		play();
+    	
+    	super.end();
+    }
+}
+
+}
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as b/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
index e643b18..11ad053 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as
@@ -110,7 +110,7 @@ import spark.components.supportClasses.ButtonBarHorizontalLayout; ButtonBarHoriz
 import spark.effects.AnimateColor; AnimateColor; // needed
 import spark.effects.Fade; Fade;
 import spark.effects.Resize; Resize; // needed
-//import spark.effects.SetAction; SetAction; // needed
+import spark.effects.SetAction; SetAction; // needed
 import spark.effects.easing.IEaser; IEaser;
 //import spark.effects.easing.Power; Power; // needed
 //import spark.events.TitleWindowBoundsEvent; TitleWindowBoundsEvent; // needed
diff --git a/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/supportClasses/SetActionInstance.as b/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/supportClasses/SetActionInstance.as
new file mode 100644
index 0000000..a3151ff
--- /dev/null
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/effects/supportClasses/SetActionInstance.as
@@ -0,0 +1,257 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 spark.effects.supportClasses
+{
+
+import mx.core.IFlexModule;
+import mx.core.IFlexModuleFactory;
+import mx.core.mx_internal;
+
+import mx.effects.effectClasses.ActionEffectInstance;
+import mx.styles.StyleManager;
+
+use namespace mx_internal;
+
+/**
+ *  The SetActionInstance class implements the instance class
+ *  for the SetAction effect.
+ *  Flex creates an instance of this class when it plays a SetAction
+ *  effect; you do not create one yourself.
+ *
+ *  @see spark.effects.SetAction
+ *  
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */  
+public class SetActionInstance extends ActionEffectInstance
+{
+    //include "../../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *
+     *  @param target The Object to animate with this effect.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function SetActionInstance(target:Object)
+    {
+        super(target);
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+    
+    //----------------------------------
+    //  property
+    //----------------------------------
+
+    /** 
+     *  @copy spark.effects.SetAction#property
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public var property:String;
+    
+    //----------------------------------
+    //  value
+    //----------------------------------
+
+    /** 
+     *  Storage for the value property.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    private var _value:*;
+    
+    /** 
+     *  @copy spark.effects.SetAction#value
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get value():*
+    {
+        var val:*;
+    
+        if (playReversed)
+        {
+             val = getStartValue();
+             if (val !== undefined)
+                 return val;
+        }
+        
+        return _value;
+    }
+    
+    /** 
+     *  @private
+     */
+    public function set value(val:*):void
+    {
+        _value = val;
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */
+    override public function play():void
+    {
+        // Dispatch an effectStart event from the target.
+        super.play();    
+        
+        if (value === undefined && propertyChanges)
+        {
+            if (property in propertyChanges.end &&
+                propertyChanges.start[property] != propertyChanges.end[property])
+                value = propertyChanges.end[property];
+        }
+        
+        if (value !== undefined)
+            setValue(property, value);
+        
+        //finishRepeat();
+    }
+    
+    /**
+     * Sets <code>property</code> to the value specified by 
+     * <code>value</code>. This is done by setting the property
+     * on the target if it is a property or the style on the target
+     * if it is a style.  There are some special cases handled
+     * for specific property types such as percent-based width/height
+     * and string-based color values.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    private function setValue(property:String, value:Object):void
+    {
+        var isStyle:Boolean = false;
+        var propName:String = property;
+        var val:Object = value;
+
+        // Handle special case of width/height values being set in terms
+        // of percentages. These are handled through the percentWidth/Height
+        // properties instead                
+        if (property == "width" || property == "height")
+        {
+            if (value is String && value.indexOf("%") >= 0)
+            {
+                propName = property == "width" ? "percentWidth" : "percentHeight";
+                val = val.slice(0, val.indexOf("%"));
+            }
+        }
+        else
+        {
+            var currentVal:Object = getValue(propName);
+            // Handle situation of turning strings into Boolean values
+            if (currentVal is Boolean)
+            {
+                if (val is String)
+                    val = (value.toLowerCase() == "true");
+            }
+            // Handle turning standard string representations of colors
+            // into numberic values
+            else if (currentVal is Number &&
+                propName.toLowerCase().indexOf("color") != -1)
+            {
+                var moduleFactory:IFlexModuleFactory = null;
+                if (target is IFlexModule)
+                    moduleFactory = target.moduleFactory;
+
+                //val = StyleManager.getStyleManager(moduleFactory).getColorName(value);
+                val = "dummy";
+            }
+        }
+        
+        if (propName in target)
+            target[propName] = val;
+        else
+            target.setStyle(propName, val);
+    }
+    
+    /**
+     * Gets the current value of propName, whether it is a 
+     * property or a style on the target.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    private function getValue(propName:String):*
+    {
+        if (propName in target)
+            return target[propName];
+        else
+            return target.getStyle(propName);
+    }
+    
+    /** 
+     *  @private
+     */
+    override protected function saveStartValue():*
+    {
+        if (property != null)
+        {
+            try
+            {
+                return getValue(property);
+            }
+            catch(e:Error)
+            {
+                // Do nothing. Let us return undefined.
+            }
+        }
+        return undefined;
+    }
+}
+
+}