forked from: forked from: Matrix3D.interpolateTo

by dizgid forked from forked from: Matrix3D.interpolateTo (diff: 15)
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/geom/Matrix3D.html#interpolate()
♥0 | Line 38 | Modified 2010-06-14 18:05:19 | MIT License
play

ActionScript3 source code

/**
 * Copyright dizgid ( http://wonderfl.net/user/dizgid )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/t0ZL
 */

// forked from dizgid's forked from: Matrix3D.interpolateTo
// forked from dizgid's Matrix3D.interpolateTo
/**
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/geom/Matrix3D.html#interpolate()
*/
package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.display.Graphics;
    import flash.geom.*;
    import flash.events.Event;

    public class InterpolateToExample extends MovieClip {
        private var ellipse1:Shape = new Shape();
        private var ellipse2:Shape = new Shape();

        public function InterpolateToExample():void {

            ellipse1 = myEllipses(250, 100, 500, 0xFF0000);
            addChild(ellipse1);
            
            ellipse2 = myEllipses(250, 100, 0, 0x00FF00);
            addChild(ellipse2);

            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }

        private function myEllipses(x:Number, y:Number, z:Number, c:Number):Shape {
            var s:Shape = new Shape();                            
            s.x = x;
            s.y = y;
            s.z = z;
            s.graphics.beginFill(c);
            s.graphics.lineStyle(2);
            s.graphics.drawCircle(0,0, 30);
            s.graphics.endFill();
            return s;
        }

        private var dd:Number = 0.0;
        private function enterFrameHandler(e:Event):void {
            ellipse1.rotationY += 1;
            ellipse1.scaleX = ellipse1.scaleY = ellipse1.scaleX = 5.0 * Math.sin(dd);
            
            ellipse1.x = 200 * Math.sin(dd) + 450 * 0.5;
            
            dd += 0.01;
            // scaleが反映されない??
           var mtx3d:Matrix3D = Matrix3D.interpolate(ellipse2.transform.matrix3D, ellipse1.transform.matrix3D, 0.1);
           ellipse2.transform.matrix3D = mtx3d;
            
           // ellipse2.transform.matrix3D.interpolateTo(ellipse1.transform.matrix3D, 0.1);
        }
    }
}