flash on 2010-11-4

by GARENA123
製作中
♥0 | Line 140 | Modified 2012-10-23 16:11:35 | MIT License
play

ActionScript3 source code

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

//製作中





package {
    import alternativ7.engine3d.containers.ConflictContainer;
    import alternativ7.engine3d.controllers.SimpleObjectController;
    import alternativ7.engine3d.core.Camera3D;
    import alternativ7.engine3d.core.View;
    import alternativ7.engine3d.materials.FillMaterial;
    import alternativ7.engine3d.primitives.Box;
    import alternativ7.engine3d.primitives.Plane;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.filters.BlurFilter;
    import flash.filters.GlowFilter;
    import flash.geom.Point;
    
    [SWF(width = 465, height = 465, frameRate = 40 ,backgroundColor="#00001A")]
    public class Main extends Sprite {
		private static var STAGE_W:uint = 465;
		private static var STAGE_H:uint = 465;
		
		//ゲームの管理
		private var gameState:String = "title";//"game","gameover"
		private var gameWaitFrame:int = 0;
		private var gameScore:int = 0;
		private var gameMeter:int = 0;
		private var gameSp:int = 0;
		private var gameRingFrame:int = 0;
		private var ringAddR:Number = 0;
		private var ringAddRSp:Number = 0.05;
		private var ringPoint:Point = new Point(0, 0);
		
		//3D
        private var container:ConflictContainer
        private var camera:Camera3D
        private var controller:SimpleObjectController
        private var boxs:Array;
        //
        private var cameraR:Number = 0;
        private var cameraRSpX:Number = 0.005;
        private var cameraRSpY:Number = 0.01;
        //
        private var mat0:FillMaterial;
        private var mat1:FillMaterial;
        private var mat2:FillMaterial;
        private var mat3:FillMaterial;
        private var mat4:FillMaterial;
        private var mat5:FillMaterial;
        
        private var bmd:BitmapData;
        private var bmp:Bitmap;
        private var bmdFade:BitmapData;
        
        private var layer3D:Sprite;
        private var layerBmp:Sprite;
        
        public function Main():void {
            layer3D = new Sprite();
            layerBmp = new Sprite();
            
            container = new ConflictContainer();
            camera = new Camera3D();
            camera.y = -500;
			camera.farClipping = 4000;
            container.addChild(camera);
            
            boxs = [];
            
            mat0 = new FillMaterial(0x1119CC, 1, 1, 0x0033CC);
            mat1 = new FillMaterial(0x1119AD, 1, 1, 0x0033CC);
            mat2 = new FillMaterial(0x11198F, 1, 1, 0x0033CC);
            mat3 = new FillMaterial(0x111970, 1, 1, 0x0033CC);
            mat4 = new FillMaterial(0x111952, 1, 1, 0x0033CC);
            mat5 = new FillMaterial(0x111933, 1, 1, 0x0033CC);
            //SimpleObjectControllerを使って、ターゲットにしたオブジェクトの座標をカーソルキーとマウスで操作でるようにする
            //controller = new SimpleObjectController(stage, camera, 500);
            //controller.lookAtXYZ(0, 0, 0);
            camera.view = new View(465, 465, true);
			camera.rotationX = Math.PI * -0.5
            layer3D.addChild(camera.view);
            
            bmd = new BitmapData(465, 465, false, 0x000000);
            bmdFade = new BitmapData(465, 465, true, 0x11000000);
            bmp = new Bitmap(bmd);
            layerBmp.addChild(bmp);
            
            //addEventListener(Event.ENTER_FRAME, onEnterFrame);
            
            addChild(layer3D);
            addChild(layerBmp);
            
        }
		//シーンの初期化、消去
		private function titleInit():void {
		
		}
		private function titleRemove():void {
		
		}
		private function gameInit():void {
		
		}
		private function gameRemove():void {
		
		}
		private function endingInit():void {
		
		}
		private function endingRemove():void {
		
		}
		//
		//Boxのリングを作成
		private function addRing() {
			var myTotal:uint = 10;
			var mySize:uint = 100;
			var myDefR:Number = Math.PI * Math.random();
			ringAddR += ringAddRSp;
			ringPoint.x = Math.random() * 200 - 100;
			ringPoint.y = Math.random() * 200 - 100;
			for (var i:int = 0; i < myTotal; i++) {
				var myBox:Box = new Box(40, 100, 10, 1, 1, 1, false, false, mat0, mat1, mat2, mat3, mat4, mat5);
				var myR:Number = (Math.PI * 2 / myTotal) * i + ringAddR;
				myBox.x = Math.sin(myR) * mySize + ringPoint.x;
				myBox.y = 2000;
				myBox.z = Math.cos(myR) * mySize + ringPoint.y;
				//myBox.rotationX = Math.random() * Math.PI;
				myBox.rotationY = myR
				//myBox.rotationZ = Math.random() * Math.PI;
				boxs.push(myBox)
				container.addChild(myBox);
			}
			
		}
		
        //ボックスを作成
        private function addBox():void {
            var myBox:Box = new Box(Math.random() * 80 + 30, Math.random() * 400 + 100, Math.random() * 30 + 10, 1, 1, 1, false, false, mat0, mat1, mat2, mat3, mat4, mat5);
            var myR:Number = Math.random() * Math.PI * 2
            var myPos:Number = Math.random() * 500 + 50;
            myBox.x = Math.sin(myR) * myPos;
            myBox.y = 4000;
            myBox.z = Math.cos(myR) * myPos;
            //myBox.rotationX = Math.random() * Math.PI;
            myBox.rotationY = myR
            //myBox.rotationZ = Math.random() * Math.PI;
            boxs.push(myBox)
            container.addChild(myBox);
        }
        //毎フレーム実行
        private function onEnterFrame(e:Event):void {
            //addBox();
            //addBox();
			gameWaitFrame++;
			if(gameWaitFrame >= 20){
				addRing();
				gameWaitFrame = 0;
			}
            var myLength:int = boxs.length;
            for (var i:int = myLength - 1; i >= 0; i--) {
                var myBox:Box = boxs[i];
                myBox.y -= 20;
                if (myBox.y < -800) {
                    container.removeChild(myBox);
                    boxs[i] = null;
                    boxs.splice(i, 1);
                }
            }
			/*
            cameraR += cameraRSpX;
            camera.rotationX = Math.PI * -0.35
            camera.rotationZ = Math.cos(cameraR);
            camera.rotationY += cameraRSpY;
			*/
            //controller.update();
            camera.render();
			//
			camera.x += (mouseX - STAGE_W * 0.5) * 0.03;
			camera.z += ( -(mouseY - STAGE_H * 0.5)) * 0.03;
			camera.rotationZ = -(mouseX - STAGE_W * 0.5) * 0.003;
            camera.rotationX = ( -(mouseY - STAGE_H * 0.5)) * 0.003 + Math.PI * -0.5
			//
            bmd.draw(bmdFade);
            
            bmd.draw(layer3D, null, null, "add");
			bmd.applyFilter(bmd, bmd.rect, new Point(), new BlurFilter(4, 4, 1));
            bmd.draw(layer3D, null, null, "add");
            //bmd.draw(bmd, null, null, "add");
            
        }

    }
}