All pastes #2067255 Raw Edit

Unnamed

public text v1 · immutable
#2067255 ·published 2011-05-23 04:16 UTC
rendered paste body
package com.neave.link {
    import flash.display.*;
    import flash.text.*;
 

package com.neave.link {
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
 
    public class NeaveLink {
 
        private var container:DisplayObjectContainer;
        private var stage:stage;
        private var onSite:boolean;
        private var canvasWidth:number;
        private var button:NeaveLinkButton;
        private var canvasHeight:number;
 
        public function NeaveLink(_arg1:DisplayObjectContainer, _arg2:number, _arg3:number){
            this.container = _arg1;
            this.stage = _arg1.stage;
            this.canvasWidth = _arg2;
            this.canvasHeight = _arg3;
            onSite = ((((!((stage.loaderInfo.url.indexof("file:///") == -1))) || (!((stage.loaderInfo.url.indexof("http://localhost/") == -1))))) || (!((stage.loaderInfo.url.indexof("http://www.neave.com/") == -1))));
            if (onSite){
                return;
            };
            button = new NeaveLinkButton();
            button.addEventListener(MouseEvent.CLICK, navigateToNeave);
            _arg1.addChild(button);
            button.x = (_arg2 / 2);
            stage.addEventListener(Event.RESIZE, linkResizeListener);
            linkResizeListener();
        }
        private function linkResizeListener(_arg1:Event=null):void{
            button.y = math.ceil((canvasHeight + (((stage.stageHeight - canvasHeight) - 20) / 2)));
        }
        private function navigateToNeave(_arg1:MouseEvent):void{
            navigateToURL(new URLRequest("http://www.neave.com/"), "_top");
        }
        public function destroy():void{
            if (onSite){
                return;
            };
            stage.removeEventListener(MouseEvent.CLICK, navigateToNeave);
            stage.removeEventListener(Event.RESIZE, linkResizeListener);
            container.removeChild(button);
            button = null;
        }
 
    }
}//package com.neave.link 
package com.neave.imagination {
 
    class ImaginationPoint {
 
        var color:uint;
        var size:number;
        var dx:number;
        var dy:number;
        var x:number;
        var y:number;
 
        public function ImaginationPoint(_arg1:number, _arg2:number, _arg3:number, _arg4:number, _arg5:number, _arg6:uint){
            this.x = _arg1;
            this.y = _arg2;
            this.dx = _arg3;
            this.dy = _arg4;
            this.size = _arg5;
            this.color = _arg6;
        }
    }
}//package com.neave.imagination 
package com.neave.imagination {
    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.geom.*;
    import com.neave.link.*;
 
    public class NeaveImagination {
 
        private const BLUE_STEP:number = 0.025;
        private const GREEN_STEP:number = 0.015;
        private const MAX_LENGTH:int = 80;
        private const RED_STEP:number = 0.02;
        private const SPREAD_MIN:int = 1;
        private const SPREAD_MAX:int = 40;
 
        private var green:number;
        private var px:number;
        private var bmp:Bitmap;
        private var blackBitmap:BitmapData;
        private var py:number;
        private var red:number;
        private var container:DisplayObjectContainer;
        private var list:array;
        private var canvasHeight:int;
        private var size:number;
        private var paused:boolean;
        private var canvasWidth:int;
        private var blur:BlurFilter;
        private var blue:number;
        private var spread:int;
        private var m:Matrix;
        private var p:Point;
        private var link:NeaveLink;
        private var stage:stage;
        private var lines:Shape;
 
        public function NeaveImagination(_arg1:DisplayObjectContainer, _arg2:int=770, _arg3:int=400){
            this.container = _arg1;
            stage = _arg1.stage;
            canvasWidth = _arg2;
            canvasHeight = _arg3;
            initStage();
            initLines();
            initBitmap();
            initLink();
            setFullScreenQuality();
        }
        private function drawBitmap():void{
            var _local1:BitmapData;
            _local1 = bmp.bitmapData;
            _local1.lock();
            _local1.merge(blackBitmap, _local1.rect, p, 4, 4, 4, 0);
            _local1.applyFilter(_local1, _local1.rect, p, blur);
            _local1.draw(lines, m, null, BlendMode.add);
            _local1.unlock();
        }
        private function disposeBitmaps():void{
            bmp.bitmapData.dispose();
            bmp.bitmapData = null;
            blackBitmap.dispose();
            blackBitmap = null;
        }
        private function mouseUpListener(_arg1:MouseEvent):void{
            spread = SPREAD_MAX;
        }
        private function drawLines():void{
            var _local1:Graphics;
            var _local2:int;
            _local1 = lines.graphics;
            _local1.clear();
            _local1.moveto(px, py);
            _local2 = (list.length - 1);
            while (_local2 > 0) {
                list[_local2].x = (list[_local2].x + list[_local2].dx);
                list[_local2].y = (list[_local2].y + list[_local2].dy);
                _local1.linestyle(list[_local2].size, list[_local2].color, (((((list.length > (MAX_LENGTH - 8))) && ((_local2 < 8)))) ? (_local2 / 8) : 1));
                _local1.curveto(list[_local2].x, list[_local2].y, ((list[_local2].x + list[(_local2 - 1)].x) / 2), ((list[_local2].y + list[(_local2 - 1)].y) / 2));
                if (list.length > MAX_LENGTH){
                    list.splice(0, 1);
                };
                _local2--;
            };
        }
        private function stageResizeListener(_arg1:Event):void{
            container.removeChild(bmp);
            disposeBitmaps();
            initBitmap();
            initLink();
        }
        public function destroy():void{
            stage.removeEventListener(Event.RESIZE, stageResizeListener);
            stage.removeEventListener(Event.MOUSE_LEAVE, mouseLeaveListener);
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);
            stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
            stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
            stage.removeEventListener(FullScreenEvent.FULL_SCREEN, setFullScreenQuality);
            stage.removeEventListener(Event.ENTER_FRAME, update);
            container.removeChild(bmp);
            disposeBitmaps();
            link.destroy();
        }
        private function initLink():void{
            if (link){
                link.destroy();
            };
            link = new NeaveLink(container, canvasWidth, canvasHeight);
        }
        private function mouseDownListener(_arg1:MouseEvent):void{
            spread = SPREAD_MIN;
        }
        private function update(_arg1:Event):void{
            var _local2:number;
            var _local3:number;
            var _local4:number;
            var _local5:uint;
            if (paused){
                return;
            };
            _local2 = ((((container.mouseX - px) + (math.random() * 4)) - 2) / 2);
            _local3 = ((((container.mouseY - py) + (math.random() * 4)) - 2) / 2);
            if (_local2 < -(spread)){
                _local2 = -(spread);
            };
            if (_local2 > spread){
                _local2 = spread;
            };
            if (_local3 < -(spread)){
                _local3 = -(spread);
            };
            if (_local3 > spread){
                _local3 = spread;
            };
            px = container.mouseX;
            py = container.mouseY;
            _local4 = ((math.sin((size = (size + 0.2))) * 8) + 4);
            _local5 = (((((math.sin((red = (red + RED_STEP))) * 128) + 127) << 16) | (((math.sin((green = (green + GREEN_STEP))) * 128) + 127) << 8)) | ((math.sin((blue = (blue + BLUE_STEP))) * 128) + 127));
            list.push(new ImaginationPoint(px, py, _local2, _local3, _local4, _local5));
            drawLines();
            drawBitmap();
        }
        private function initLines():void{
            list = new array();
            px = (py = (size = 0));
            spread = SPREAD_MAX;
            paused = false;
            red = 0;
            green = 0xFF;
            blue = 0xFF;
            lines = new Shape();
        }
        private function initStage():void{
            stage.scalemode = StageScaleMode.NO_SCALE;
            stage.addEventListener(Event.RESIZE, stageResizeListener);
            stage.addEventListener(Event.MOUSE_LEAVE, mouseLeaveListener);
            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);
            stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
            stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
            stage.addEventListener(FullScreenEvent.FULL_SCREEN, setFullScreenQuality);
            stage.addEventListener(Event.ENTER_FRAME, update);
        }
        private function initBitmap():void{
            var _local1:int;
            var _local2:int;
            var _local3:int;
            var _local4:int;
            _local1 = stage.stageWidth;
            _local2 = stage.stageHeight;
            _local3 = math.ceil((_local1 / 2));
            _local4 = math.ceil((_local2 / 2));
            bmp = new Bitmap(new BitmapData(_local3, _local4, false, 0xFF000000));
            bmp.smoothing = true;
            bmp.scaleX = (bmp.scaleY = 2);
            bmp.x = ((canvasWidth - _local1) / 2);
            bmp.y = ((canvasHeight - _local2) / 2);
            container.addChild(bmp);
            blackBitmap = new BitmapData(_local3, _local4, false, 0xFF000000);
            m = new Matrix();
            m.translate(-(bmp.x), -(bmp.y));
            m.scale(0.5, 0.5);
            p = new Point(0, 0);
            blur = new BlurFilter(4, 4, 1);
        }
        private function setFullScreenQuality(_arg1:FullScreenEvent=null):void{
            stage.quality = (((stage.displayState == StageDisplayState.FULL_SCREEN)) ? StageQuality.LOW : StageQuality.HIGH);
        }
        private function mouseMoveListener(_arg1:MouseEvent):void{
            paused = false;
        }
        private function mouseLeaveListener(_arg1:Event):void{
            paused = true;
        }
 
    }
}//package com.neave.imagination 
package {
    import flash.display.*;
    import com.neave.imagination.*;
 
    public class Main extends Sprite {
 
        private var imagination:NeaveImagination;
 
        public function Main(){
            var _local1:Sprite;
            super();
            _local1 = new Sprite();
            addChild(_local1);
            imagination = new NeaveImagination(_local1);
            stage.showDefaultContextMenu = false;
        }
    }
}//package