宇宙船(アステロイド)

by Nowloading_
♥0 | Line 95 | Modified 2011-04-04 23:35:24 | MIT License
play

ActionScript3 source code

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


package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    public class ShipSim2 extends Sprite{
        private var ship:Ship;
        private var vr:Number = 0;
        private var thrust:Number = 0;
        private var vx:Number = 0;
        private var vy:Number = 0;
        public function ShipSim2(){
            init();
        }
        private function init():void{
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT; 
            ship = new Ship();
            addChild(ship);
            ship.x = stage.stageWidth/2;
            ship.y = stage.stageHeight/2;
            addEventListener(Event.ENTER_FRAME,onEnterFlame);
            stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
            stage.addEventListener(KeyboardEvent.KEY_UP,onKeyUp);
        }
        private function onKeyDown(e:KeyboardEvent):void{
            switch (e.keyCode){
                case Keyboard.LEFT:
                vr = -5;
                break;
                
                case Keyboard.RIGHT:
                vr = 5;
                break;
                
                case Keyboard.UP:
                thrust = 0.2;
                ship.draw(true);
                break;
                
                default:
                break;
            }            
        }
        private function onKeyUp(e:KeyboardEvent):void{
            vr=0;
            thrust=0;
            ship.draw(false);
        }
        private function onEnterFlame(e:Event):void{
            ship.rotation += vr;
            var angle:Number = ship.rotation * Math.PI/180;
            var ax:Number = Math.cos(angle)*thrust;
            var ay:Number = Math.sin(angle)*thrust;
            vx += ax;
            vy += ay;
            ship.x += vx;
            ship.y += vy;
            var left:Number = 0;
            var right:Number = stage.stageWidth;
            var top:Number = 0;
            var bottom:Number = stage.stageHeight;
            if(ship.x-ship.width/2>right){
                ship.x = left-ship.width/2;
            }else if(ship.x + ship.width/2<left){
                ship.x = right+ship.width/2;                
            }
            if(ship.y-ship.height/2>bottom){
                ship.y = top-ship.height/2;
            }else if(ship.y + ship.height/2<top){
                ship.y = bottom+ship.height/2;                
            }
        }
    }
}

    import flash.display.Sprite;
    class Ship extends Sprite{
        public function Ship(){
            draw(false);
        }
        public function draw(showFlame:Boolean):void{
            graphics.clear();
            graphics.lineStyle(1,0x000000);
            graphics.moveTo(10,0);
            graphics.lineTo(-10,10);
            graphics.lineTo(-5,0);
            graphics.lineTo(-10,-10);
            graphics.lineTo(10,0);
            
            if(showFlame){
                graphics.lineStyle(1,0xff0000);
                graphics.moveTo(-7.5,-5);
                graphics.lineTo(-15,0);
                graphics.lineTo(-7.5,5);
            }
        }
    }