forked from: flash on 2014-6-2

by greentec
I just tried 8 directions + BlendMode.ADD.
faster convergence.
+ little optimization
♥0 | Line 46 | Modified 2014-06-14 14:30:13 | MIT License
play

ActionScript3 source code

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

// forked from UnknownOpenID's flash on 2014-6-2
package {
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    import flash.text.TextFormat;
    import flash.text.TextField;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.display.Sprite;
    import flash.display.BlendMode;
    public class FlashTest extends Sprite {
        
        public var image:Bitmap;
        public var clone:Bitmap;
        public var bitmapdata:BitmapData;
        public var text:TextField;
        public var generation:uint = 0;
        
        public function FlashTest()
        {
            stage.frameRate = 60;
            
            addEventListener(Event.ENTER_FRAME, Update);
            
            image = new Bitmap(new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xffffff));
            image.bitmapData.noise(Math.random() * int.MAX_VALUE);
            addChild(image);
            
            text = new TextField();
            text.autoSize = "left";
            addChild(text);
            
            
            //Wonderfl.capture_delay( 10 );
        }
        
        public function Update(event:Event):void
        {
            clone = new Bitmap(image.bitmapData.clone());
            bitmapdata = image.bitmapData;
            
            for(var y:uint = 0; y < clone.height; y++)
            {
                for(var x:uint = 0; x < clone.width; x++)
                {
                    clone.bitmapData.setPixel(x, y, (bitmapdata.getPixel(x, y - 1) + bitmapdata.getPixel(x, y + 1) + bitmapdata.getPixel(x + 1, y) + bitmapdata.getPixel(x - 1, y) + bitmapdata.getPixel(x - 1, y - 1) + bitmapdata.getPixel(x + 1, y + 1) + bitmapdata.getPixel(x + 1, y - 1) + bitmapdata.getPixel(x - 1, y + 1)) / 8)
                }
            }
            
            image.bitmapData = clone.bitmapData;
            image.blendMode =BlendMode.ADD;
            
            text.text = "Output:\nGeneration: " + generation.toString();
            text.setTextFormat(new TextFormat("arial", 32));
            
            generation += 1;
        }

    }
}