 import mx.core.mx_internal;
 import mx.effects.IEffectInstance;
 
+import spark.effects.animation.MotionPath;
 import spark.effects.supportClasses.AnimateTransformInstance;
 
 use namespace mx_internal;

    //--------------------------------------------------------------------------
    
    //----------------------------------
    //  applyChangesPostLayout
    //----------------------------------
    [Inspectable(category="General")]
    /** 
     *  @copy AnimateTransform#applyChangesPostLayout
     *  The default value for this property is true for 3D effects,
     *  because the Flex layout system ignores 3D transformation properties.
     *
     *  @default true
     * 
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    override public function get applyChangesPostLayout():Boolean
    {
        return super.applyChangesPostLayout;
    }

    //----------------------------------
    //  scaleZFrom
    //----------------------------------

    /**
     * @private
     */
    override public function createInstance(target:Object = null):IEffectInstance
    {
        motionPaths = new Vector.<MotionPath>();
        return super.createInstance(target);
    }
                        
    /**
     * @private
     */
    override protected function initInstance(instance:IEffectInstance):void
    {
        if (!applyChangesPostLayout)
        {
            addMotionPath("scaleX", scaleXFrom, scaleXTo, scaleXBy);
            addMotionPath("scaleY", scaleYFrom, scaleYTo, scaleYBy);
            addMotionPath("scaleZ", scaleZFrom, scaleZTo, scaleZBy);
        }
        else
        {
            addPostLayoutMotionPath("postLayoutScaleX", scaleXFrom, scaleXTo, scaleXBy);
            addPostLayoutMotionPath("postLayoutScaleY", scaleYFrom, scaleYTo, scaleYBy);
            addPostLayoutMotionPath("postLayoutScaleZ", scaleZFrom, scaleZTo, scaleZBy);
        }
        super.initInstance(instance);
