forked from: Plasma

by MediaCritic forked from Plasma (diff: 3)
Original Code at Processing 
Plasma Demo Effect by luis2048.
♥0 | Line 67 | Modified 2013-03-17 04:20:28 | MIT License
play

ActionScript3 source code

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

// forked from alotfuck's Plasma 
package {

    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import frocessing.color.*;
    
    /**
     * Original Code at Processing 
     * Plasma Demo Effect by luis2048. 
     */
    public class FlashTest extends Sprite {
       
        private var pixelSize:Number=10;
        private var pg:BitmapData;
        private var pg2:BitmapData;

        private var frameCountX:Number=0;
        private var frameCountY:Number=0;
        
        private var bt2:Bitmap;
        private var count:Number=0;
        
        private var blendMode_ary:Array=[
        BlendMode.ADD,
        BlendMode.INVERT,
        BlendMode.DARKEN,
        BlendMode.ERASE,
        BlendMode.HARDLIGHT,
        BlendMode.ERASE,
        BlendMode.LAYER,
        BlendMode.LIGHTEN,
        BlendMode.MULTIPLY,
        BlendMode.OVERLAY,
        BlendMode.SCREEN,
        BlendMode.SUBTRACT];
 
        public function FlashTest() {
            setup();
        }

        private function setup() :void{
        pg = new BitmapData(30, 30);
            pg2 = new BitmapData(30, 30);
            
        var bt:Bitmap=new Bitmap(pg);
        bt2=new Bitmap(pg2);

        addChild(bt);
        addChild(bt2);

        bt2.blendMode=BlendMode.HARDLIGHT;
        bt.filters=bt2.filters=[new BlurFilter(300,300,300)];
        bt.width=bt2.width=stage.stageWidth;
        bt.height=bt2.height=stage.stageHeight;
        addEventListener(Event.ENTER_FRAME , draw);
            stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
        }

        private function draw(evt:Event):void{
        frameCountX+=8;
        frameCountY+=2;

        var xc:Number=5;
        var calculation1:Number = Math.sin( (frameCountX * 0.61655617)/180*Math.PI);
        var calculation2:Number = Math.sin( (frameCountY * -3.6352262)/180*Math.PI);
        for (var x:int = 0; x < pg.width; x++, xc += pixelSize) {
        var yc:Number = 40;
        var s1:Number = 128 + 128 * Math.sin((xc)/180*Math.PI * calculation1 );
        for (var y:int = 0; y < pg.height; y++, yc += pixelSize) {
            var s2:Number = 128 + 128 * Math.sin((yc)/180*Math.PI * calculation2 );
            var s3:Number = 128 + 128 * Math.sin(((xc + yc + frameCountX * 5)/180*Math.PI / 2));
            var s :Number = (s1+ s2 + s3) *0.4;
            pg.setPixel(x,y,new ColorHSV(s/300*360 , s/50  , 1).value);
            pg2.setPixel(pg2.width-x-1,pg2.height-y-1,new ColorHSV(1 , s , s/400).value);
        }
        }
        }
        
        private function onMouseUp(evt:MouseEvent):void{
        bt2.blendMode=blendMode_ary[count];
        if(blendMode_ary.length<=++count)count=0;
        }
    }
}