In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: flash on 2011-7-27

Get Adobe Flash player
by yasuda_keigo 31 Jan 2013
// forked from kihon's flash on 2011-7-27
package
{
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.geom.Matrix;
    import flash.geom.Point;
    import flash.geom.Rectangle;
 
    public class Main extends Sprite
    {
        private var player:Sprite = new Sprite();
        private var angle:Number = Math.PI / 4;
        private var speed:Number = 0.0;
        private var keys:Array = [];
        private var pattern:BitmapData;
        private var matrix:Matrix = new Matrix();
 
        private const PLAYER_POS:Point = new Point(232.5, 232.5);
        private const PATTERN_SIZE:Number = 60.0;
        private const MAX_SPEED:Number = 5.0;
        private const ACCEL:Number = 0.3;
        private const ANGLE:Number = 0.1;
        private const LEFT:int = 37;
        private const UP:int = 38;
        private const RIGHT:int = 39;
        private const SIZE:Number = 10;
 
        public function Main()
        {    
            addChild(player);
            pattern = new BitmapData(PATTERN_SIZE, PATTERN_SIZE, false, 0xAAB6FF);
            pattern.fillRect(new Rectangle(1, 1, pattern.width - 2, pattern.height - 2), 0x0);
 
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
            stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
        }
 
        private function onKeyUp(event:KeyboardEvent):void 
        {
            keys[event.keyCode] = false;
        }
 
        private function onKeyDown(event:KeyboardEvent):void 
        {
            keys[event.keyCode] = true;
        }
 
        private function onEnterFrame(event:Event):void 
        {
            var s:int = -1;
            if (keys[UP]) s = 1;
            speed = clamp(speed + ACCEL * s, 0.0, MAX_SPEED);
            if (0 < speed)
            {
                var h:int = 0;
                if (keys[LEFT]) h = -1;
                else if (keys[RIGHT]) h = 1;
                angle += ANGLE * h;
                matrix.translate( -speed * Math.cos(angle), -speed * Math.sin(angle));
            }
 
            draw();
        }
 
        private function clamp(value:Number, min:Number, max:Number):Number
        {
            if (value < min) value = min;
            if (max < value) value = max;
            return value;
        }
 
        private function draw():void 
        {
            graphics.beginBitmapFill(pattern, matrix);
            graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
            graphics.endFill();
 
            player.graphics.clear();
            player.graphics.lineStyle(1.0, 0x0000FF);
            player.graphics.beginFill(0xFFFFFF);
            player.graphics.moveTo(PLAYER_POS.x + Math.cos(angle) * SIZE, PLAYER_POS.y + Math.sin(angle) * SIZE);
            player.graphics.lineTo(PLAYER_POS.x + Math.cos(angle + Math.PI / 1.5) * SIZE, PLAYER_POS.y + Math.sin(angle + Math.PI / 1.5) * SIZE);
            player.graphics.lineTo(PLAYER_POS.x, PLAYER_POS.y);
            player.graphics.lineTo(PLAYER_POS.x + Math.cos(angle - Math.PI / 1.5) * SIZE, PLAYER_POS.y + Math.sin(angle - Math.PI / 1.5) * SIZE);
            player.graphics.lineTo(PLAYER_POS.x + Math.cos(angle) * SIZE, PLAYER_POS.y + Math.sin(angle) * SIZE);
            player.graphics.endFill();
        }
    }
}