forked from: forked from: Matrix3D.interpolateTo
forked from forked from: Matrix3D.interpolateTo (diff: 15)
http://help.adobe.com/ja_JP/AS3LCR/Flash_10.0/flash/geom/Matrix3D.html#interpolate()
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);
}
}
}