3Dぐりぐり (3)

by nacookan
♥0 | Line 72 | Modified 2009-05-23 11:10:11 | MIT License
play

ActionScript3 source code

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

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.geom.Point;

    [SWF(backgroundColor="0x000000", frameRate="60")]

    public class Guriguri3DCube extends Sprite {
        public function Guriguri3DCube() {
            var canvas:Sprite = new Sprite();
            for(var i:Number = 0; i < 20; i++){
                var cube:Sprite = generateCube();
                cube.x = rnd(450);
                cube.y = rnd(450);
                cube.z = 500 - (i * (500 / 20));
                canvas.addChild(cube);
            }
            
            addChild(canvas);
            addEventListener(Event.ENTER_FRAME, function(e:Event):void{
                transform.perspectiveProjection.projectionCenter = new Point(mouseX, mouseY);
            });
        }
        
        private function generateCube():Sprite{
            var cube:Sprite = new Sprite();
            var color:Number = rnd(255 * 255 * 255);
            
            var w1:Sprite = generateWall(color);
            w1.x = 0;
            w1.y = 0;
            w1.z = 0;
            w1.rotationX = 90;
            cube.addChild(w1);
            
            var w2:Sprite = generateWall(color);
            w2.x = 0;
            w2.y = 0;
            w2.z = 50;
            cube.addChild(w2);
            
            var w3:Sprite = generateWall(color);
            w3.x = 0;
            w3.y = 0;
            w3.z = 0;
            w3.rotationY = -90;
            cube.addChild(w3);
            
            var w4:Sprite = generateWall(color);
            w4.x = 50;
            w4.y = 0;
            w4.z = 50;
            w4.rotationY = 90;
            cube.addChild(w4);
            
            var w5:Sprite = generateWall(color);
            w5.x = 0;
            w5.y = 50;
            w5.z = 50;
            w5.rotationX = -90;
            cube.addChild(w5);
            
            var w6:Sprite = generateWall(color);
            w6.x = 0;
            w6.y = 0;
            w6.z = 0;
            cube.addChild(w6);
            
            return cube;
        }
        
        private function generateWall(color:Number):Sprite{
            var wall:Sprite = new Sprite();
            wall.graphics.lineStyle(1, 0xffffff, 0.5);
            wall.graphics.beginFill(color, 0.5);
            wall.graphics.drawRect(0, 0, 50, 50);
            wall.graphics.endFill();
            return wall;
        }
         
        private function rnd(max:Number):Number{
            return Math.floor(Math.random() * max);
        }           
    }
}

Forked