flash on 2015-3-10

by mutantleg
♥0 | Line 85 | Modified 2015-03-10 04:47:24 | MIT License
play

ActionScript3 source code

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

package {
    import flash.geom.Rectangle;
    import flash.display.BitmapData;
    import flash.geom.Vector3D;
    import flash.geom.Matrix3D;
    import flash.geom.Matrix;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            skin = new BitmapData(256,256, false, 0x808080);
            var i:int; var k:int;
            var r:Rectangle; r = new Rectangle(0,0, 32,32);
            
            for (i = 0; i < 8; i++)
            {for (k = 0; k < 5; k++)
            {
              r.x = k * 64 + (i % 2)*32;
              r.y = i * 32;
              skin.fillRect(r, 0x203080);   
            } }
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor

        public var mat:Matrix = new Matrix();
        public var mat3:Matrix3D = new Matrix3D();
        public var vec:Vector.<Number> = new Vector.<Number>(16,false);
        
        public var gt:int = 0;
        
        public var skin:BitmapData;
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(2, 0);
            
            
            var ang:Number;
            ang = gt *0.01;
            
            mat3.identity();
            mat3.appendRotation(ang*(180/3.1415), Vector3D.Y_AXIS);
            mat3.appendRotation(30, Vector3D.X_AXIS); //note -- 30 is a guess
            mat3.appendTranslation(235,235,0);
            mat3.appendTranslation(0,128,0);
            vec = mat3.rawData;


            ang = -ang;
            mat.identity();
            mat.a = Math.cos(ang);
            mat.b = -Math.sin(ang)*0.5; 
            mat.c = Math.sin(ang);
            mat.d = Math.cos(ang)*0.5;
            mat.tx = Math.sin(ang) *- 128 + Math.cos(ang)*-128;
            mat.ty = Math.cos(ang) * -64  + Math.sin(ang)* 64; 
            mat.scale(2,2); 
            mat.ty += 465*0.5;
            mat.tx += 465*0.5; 
            mat.ty += 128;
            
            graphics.beginBitmapFill(skin, mat, false, false);
            graphics.drawRect(0,0,465,465);
            graphics.endFill();
            
            
            var w:Number; w= 512;
            drawLine(-w,0,0, w,0,0);
            drawLine(0,0,-w, 0,0,w);
           // drawLine(w,0,-w, w,0,w);
           // drawLine(-w,0,w, w,0,w);
            
            graphics.beginFill(0x8080ff, 1);
            graphics.drawRect(0,0, 465, 256);
            graphics.endFill();
            
            drawSphere(64,-32,0, 32);
            drawSphere(64,-24,64+32, 24);
            drawSphere(0,-16,64, 16);
            
            
            gt += 1;
            
        }//onenter

        public function drawSphere(x0:Number, y0:Number, z0:Number, r:Number=32):void
        {
            var ax:Number, ay:Number;
            ax = vec[0] * x0 + vec[4]*y0 + vec[8] * z0 + vec[12];
            ay = vec[1] * x0 + vec[5]*y0 + vec[9] * z0 + vec[13];
            graphics.drawCircle(ax,ay, r);
        }//drawsphere

        
        public function drawLine(x0:Number, y0:Number, z0:Number,
        x1:Number, y1:Number, z1:Number):void
        {
            var ax:Number, ay:Number, az:Number;
            ax = vec[0] * x0 + vec[4]*y0 + vec[8] * z0 + vec[12];
            ay = vec[1] * x0 + vec[5]*y0 + vec[9] * z0 + vec[13];
            //az = vec[2] * x0 + vec[6]*y1 + vec[10] * z1 + vec[14];
            graphics.moveTo(ax,ay);
            ax = vec[0] * x1 + vec[4]*y1 + vec[8] * z1 + vec[12];
            ay = vec[1] * x1 + vec[5]*y1 + vec[9] * z1 + vec[13];
            graphics.lineTo(ax,ay);
            
        }//drawline
        
        
        
    }//claasend
    
    
}