PerspectiveProjectionの練習

by tsu_droid
from http://help.adobe.com/ja_JP/as3/dev/WSA340940C-A537-450c-8069-A4A052A98CAA.html
♥0 | Line 43 | Modified 2011-07-26 00:32:29 | MIT License
play

ActionScript3 source code

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

// from http://help.adobe.com/ja_JP/as3/dev/WSA340940C-A537-450c-8069-A4A052A98CAA.html

package {
    
    import flash.display.*;
    import flash.geom.*;

    public class Matrix3DTransformsExample extends Sprite {
        
        private var rect1:Shape;
        private var rect2:Shape;

        public function Matrix3DTransformsExample():void {
            
            var pp:PerspectiveProjection = this.transform.perspectiveProjection;
            pp.projectionCenter = new Point(275,200);
            this.transform.perspectiveProjection = pp;

            rect1 = new Shape();
            rect1.x = -70;
            rect1.y = -40;
            rect1.z = 0;
            rect1.graphics.beginFill(0xFF8800);
            rect1.graphics.drawRect(0,0,50,80);
            rect1.graphics.endFill();
            addChild(rect1);

            rect2 = new Shape();
            rect2.x = 20;
            rect2.y = -40;
            rect2.z = 0;
            rect2.graphics.beginFill(0xFF0088);
            rect2.graphics.drawRect(0,0,50,80);
            rect2.graphics.endFill();
            addChild(rect2);

            doTransforms();
        }

        private function doTransforms():void {
            rect1.rotationX = 15;
            rect1.scaleX = 1.2;
            rect1.x += 100;
            rect1.y+=50;
            rect1.rotationZ=10;

            var matrix:Matrix3D=rect2.transform.matrix3D;
            matrix.appendRotation(15, Vector3D.X_AXIS);
            matrix.appendScale(1.2, 1, 1);
            matrix.appendTranslation(100, 50, 0);
            matrix.appendRotation(10, Vector3D.Z_AXIS);
            rect2.transform.matrix3D=matrix;
        }
    }
}



//