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

flash on 2011-7-16

Get Adobe Flash player
by kihon 15 Jul 2011
    Embed
package
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.filters.GlowFilter;
    import flash.geom.Matrix;
    import flash.geom.Point;
    import flash.geom.Rectangle;
    import flash.net.URLRequest;
    import flash.system.LoaderContext;
    import flash.text.TextField;
    import flash.text.TextFormat;
    
    public class Main extends Sprite
    {
        public static var instance:Main;
        public static var canvas:BitmapData;
        public static var scale:Number = 2.0;
        
        public static const WIDTH:int = 465;
        public static const HEIGHT:int = 430;
        
        private var velocity:Point;
        private var pos:Point;
        private var keys:Array = [];
        private var keyIndex:int = 0;
        private var itemContainer:Sprite = new Sprite();
        private var bgMatrix:Matrix = new Matrix();
        private var bgSprite:Sprite = new Sprite();
        private var pattern:BitmapData;
        
        private const SIZE:int = 20;
        private const COLORS:Array = [0xFBFFE8, 0xF6F1C6];
        private const LEFT:int = 37;
        private const RIGHT:int = 39;
        private const UP:int = 38;
        private const KEY_PATTERN:Array = [ { y:0, x:1 }, { y:1, x:0 }, { y:0, x: -1 }, { y: -1, x:0 } ];
        
        public function Main()
        {
            instance = this;
            addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(event:Event):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
            loader.load(new URLRequest("http://assets.wonderfl.net/images/related_images/8/82/8217/82174d47350209ab4003c1e65ffc1ba3aa3eb001"), new LoaderContext(true));
        }
        
        private function initHandler(event:Event):void 
        {
            var loader:Loader = event.currentTarget.loader as Loader;
            var bd:BitmapData = new BitmapData(loader.width, loader.height, true, 0x0);
            bd.draw(loader);

            graphics.beginFill(0x0);
            graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
            graphics.endFill();
            
            pattern = new BitmapData(SIZE * 2, SIZE * 2, false, 0xFE9E00);
            pattern.fillRect(new Rectangle(SIZE, 0, SIZE, SIZE), 0xFDC200);
            pattern.fillRect(new Rectangle(0, SIZE, SIZE, SIZE), 0xFDC200);

            for (var i:int = 0; i < SIZE; i++)
            {
                pattern.setPixel(0, i, 0xFEB400);
                pattern.setPixel(i, 0, 0xFEB400);
                pattern.setPixel(SIZE - 1, SIZE - i - 1, 0xFC9900);
                pattern.setPixel(SIZE - i - 1, SIZE - 1, 0xFC9900);
                
                pattern.setPixel(SIZE, i, 0xFFCB02);
                pattern.setPixel(SIZE + i, 0, 0xFFCB02);
                pattern.setPixel(SIZE * 2 - 1, SIZE - i - 1, 0xFCA500);
                pattern.setPixel(SIZE * 2 - i - 1, SIZE - 1, 0xFCA500);
                
                pattern.setPixel(0, i + SIZE, 0xFFCB02);
                pattern.setPixel(i, SIZE, 0xFFCB02);
                pattern.setPixel(SIZE - 1, SIZE * 2 - i - 1, 0xFCA500);
                pattern.setPixel(SIZE - i - 1, SIZE * 2 - 1, 0xFCA500);
                
                pattern.setPixel(SIZE, i + SIZE, 0xFEB400);
                pattern.setPixel(SIZE + i, SIZE, 0xFEB400);
                pattern.setPixel(SIZE * 2 - 1, SIZE * 2 - i - 1, 0xFC9900);
                pattern.setPixel(SIZE * 2 - i - 1, SIZE * 2 - 1, 0xFC9900);
            }
            
            bgSprite.alpha = 0.5;
            addChild(bgSprite);
            
            canvas = new BitmapData(WIDTH / scale, HEIGHT / scale, true, 0x0);
            var bitmap:Bitmap = new Bitmap(canvas);
            bitmap.scaleX = bitmap.scaleY = scale;
            addChild(bitmap);
            
            Item.init(bd);
            Score.init();
            Status.init();
            
            pos = new Point(canvas.width / 2, canvas.height / 2);
            velocity = new Point(1, 0);
            
            addChild(itemContainer);
            for (i = 0; i < Item.PRINT_NUM; i++)
            {
                var item:Item = new Item();
                itemContainer.addChild(item);    
            }
            var maskShape:Shape = new Shape();
            maskShape.graphics.beginFill(0x0);
            maskShape.graphics.drawRect(0, 0, WIDTH, HEIGHT);
            maskShape.graphics.endFill();
            itemContainer.mask = maskShape;
            
            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 
        {
            if (!keys[event.keyCode])
            {
                keys[event.keyCode] = true;
                if (event.keyCode == LEFT) keyIndex--;
                if (event.keyCode == RIGHT) keyIndex++;
                keyIndex %= KEY_PATTERN.length;
                if (keyIndex < 0) keyIndex += KEY_PATTERN.length;
            }
        }
        
        private function onEnterFrame(event:Event):void 
        {
            var num:int = 1;
            if (keys[UP]) num = 2;
            
            for (var i:int = 0; i < num; i++)
            {
                var v:Object = KEY_PATTERN[keyIndex];
                velocity.x = v.x;
                velocity.y = v.y;
                canvas.setPixel32(pos.x, pos.y, 0xFFFFFFFF);
                
                pos.x += velocity.x;
                pos.y += velocity.y;
                
                pos.x %= WIDTH / scale;
                pos.y %= HEIGHT / scale;
                if (pos.x < 0) pos.x += WIDTH / scale;
                if (pos.y < 0) pos.y += HEIGHT / scale;
                
                if (canvas.getPixel(pos.x, pos.y) == 0xFFFFFF)
                {
                    removeEventListener(Event.ENTER_FRAME, onEnterFrame);
                    gameover();
                    return;
                }
                
                bgMatrix.translate(-velocity.x, -velocity.y);
                bgSprite.graphics.clear();
                bgSprite.graphics.beginBitmapFill(pattern, bgMatrix);
                bgSprite.graphics.drawRect(0, 0, WIDTH, HEIGHT);
                bgSprite.graphics.endFill();
                bgSprite.alpha = 0.3;
                
                var items/*Item*/:Array = itemContainer.getObjectsUnderPoint(new Point(pos.x * scale, pos.y * scale));
                if (items.length != 0)
                {
                    var item:Item = items[0];
                    item.changeImage();
                    Score.value += item.rawScore * Status.rate;
                    Status.nextValue++;
                    
                    var point:Point = new Point();
                    for (var j:int = 0; j < Status.bugCount; j++)
                    {
                        do
                        {
                            point.x = Math.random() * Main.WIDTH;
                            point.y = Math.random() * Main.HEIGHT;
                        }
                        while (Point.distance(pos, point) < 50);
                        Main.canvas.setPixel32(point.x, point.y, 0xFFFFFFFF);
                    }
                }
            }
        }
        
        private function gameover():void
        {
            var text:TextField = new TextField();
            text.defaultTextFormat = new TextFormat("_typeWriter", 40, 0x0, true);
            text.autoSize = "left";
            text.text = "GAME OVER";
            
            var bd:BitmapData = new BitmapData(text.width, text.height, true, 0x0);
            bd.draw(text);
            var bitmap:Bitmap = new Bitmap(bd);
            bitmap.filters = [new GlowFilter(0xFFFFFF, 1, 7, 7, 50, 1, false)];
            bitmap.x = (WIDTH - bitmap.width) / 2;
            bitmap.y = (HEIGHT - bitmap.height) / 2;
            addChild(bitmap);
        }
    }
}
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFormat;

class Utils
{
    public static function createTextField(text:String, size:int, color:int, x:Number = 0, y:Number = 0):TextField
    {
        var tf:TextField = new TextField();
        tf.defaultTextFormat = new TextFormat("_typeWriter", size, color, true);
        tf.autoSize = "left";
        tf.text = text;
        tf.x = x, tf.y = y;
        return tf;
    }
}

class Status
{
    private static var _level:int = 1;
    private static var _nextValue:int = 0;
    private static var levelText:TextField;
    private static var nextText:TextField;
    public static var nextMAX:int = 3;
    public static var rate:int = 1;
    public static var bugCount:int = 4;
    
    public static function init():void
    {
        levelText = Utils.createTextField("Level " + _level, 20, 0xFFFFFF, 180, Main.HEIGHT);
        Main.instance.addChild(levelText);
        
        nextText = Utils.createTextField("NEXT " + _nextValue + "/" + nextMAX, 20, 0xFFFFFF, 330, Main.HEIGHT);
        Main.instance.addChild(nextText);
    }
    
    public static function get level():int 
    {
        return _level;
    }
    
    public static function set level(value:int):void 
    {
        _level = value;
        levelText.text = "LEVEL " + _level;
    }
    
    public static function get nextValue():int 
    {
        return _nextValue;
    }
    
    public static function set nextValue(value:int):void 
    {
        _nextValue = value;
        if (_nextValue == nextMAX)
        {
            _nextValue = 0;
            nextMAX += 2;
            Status.bugCount *= 1.3;
            level++;
            rate++;
        }
        nextText.text = "NEXT " + _nextValue + "/" + nextMAX;
    }
}

class Score
{
    private static var _value:int = 0;
    private static var text:TextField;
    
    public static function get value():int 
    {
        return _value;
    }
    
    public static function set value(value:int):void 
    {
        _value = value;
        text.text = "SCORE: " + _value.toString();
    }
    
    public static function init():void
    {
        text = Utils.createTextField("SCORE: 0", 20, 0xFFFFFF, 0, Main.HEIGHT);
        Main.instance.addChild(text);
    }
}

class Item extends Bitmap
{
    public static var image:BitmapData;
    public static var group:Vector.<Item> = new Vector.<Item>();
    
    public static const SIZE:int = 24;
    public static const NUM:int = 8;
    public static const PRINT_NUM:int = 12;
    public static const ZERO:Point = new Point();
    public var scale:Number = 1.3;
    public var rawScore:int;
    
    public static function init(bd:BitmapData):void
    {
        image = bd;
    }
    
    public function Item()
    {
        changeImage();
    }
    
    public function changeImage():void
    {
        bitmapData = new BitmapData(SIZE, SIZE, true, 0x0);
        var itemIndex:int = NUM * Math.random();
        rawScore = itemIndex * 10;
        bitmapData.copyPixels(image, new Rectangle(itemIndex * SIZE, 0, SIZE, SIZE), ZERO, image, ZERO, true);
        x = Math.random() * (Main.WIDTH - SIZE * scale);
        y = Math.random() * (Main.HEIGHT - SIZE * scale);
        scaleX = scaleY = scale;
        
        var rect:Rectangle = new Rectangle(x / Main.scale, y / Main.scale, width / 2, height / 2);
        Main.canvas.fillRect(rect, 0x0);
    }
}