flash on 2010-2-22
/**
* Copyright deathcon7 ( http://wonderfl.net/user/deathcon7 )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/oqus
*/
package {
import flash.display.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.*;
import flash.geom.Point;
import flash.geom.Matrix;
import flash.ui.Mouse;
[SWF (width="750",
height="550",
frameRate="20" ,
backgroundColor="0xffffff")]
public class Wallpaper extends Sprite {
private var bitmap:Bitmap;
private var bitmapData:BitmapData;
private var fogBitmap:Bitmap;
private var fogBitmapData:BitmapData;
private var i:uint;
private var faicHolder:Sprite;
private var scale:Number = 0;
private var counter:uint = 0;
private var deg2Rad:Number = 180 / Math.PI;
private var toggle:Boolean;
public function Wallpaper() {
toggle = false;
bitmapData=new BitmapData(stage.stageWidth,stage.stageHeight, false, 0xFF000000);
bitmap=new Bitmap(bitmapData);
fogBitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0xFFFF0000);
fogBitmap = new Bitmap(fogBitmapData);
addChild(fogBitmap);
addChild(bitmap);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
stage.addEventListener(MouseEvent.CLICK, onClick);
faicHolder = addChild(makeFaic())as Sprite;
}
private function enterFrameHandler(e:Event):void {
if (toggle)
{
bgAnimation();
}
else
{
drawFaic();
blurTheShitOutOfTheBackground();
distortTheFuckOutOfTheBackground();
seriouslyThisIsGettingOutOfHand();
}
}
private function makeFaic():Sprite {
var animatedFaicHolder:Sprite = new Sprite();
var faicHolder:Sprite = new Sprite();
faicHolder.graphics.lineStyle(3, 0x000000, 1);
faicHolder.graphics.beginFill(0xFF9B00);
faicHolder.graphics.drawCircle(0, 0, 15);
faicHolder.graphics.endFill();
faicHolder.graphics.lineStyle(1,0x000000, 0);
faicHolder.graphics.beginFill(0xFFCC00);
faicHolder.graphics.drawCircle(0, 1, 11);
faicHolder.graphics.endFill();
faicHolder.graphics.lineStyle(3, 0x000000, 1);
faicHolder.graphics.moveTo(-15, -15);
faicHolder.graphics.lineTo(0, -3);
faicHolder.graphics.lineTo(15, -15);
faicHolder.graphics.moveTo(-6.5, -3);
faicHolder.graphics.beginFill(0x0000000, 1);
faicHolder.graphics.drawCircle(-7,-2,1.5);
faicHolder.graphics.drawCircle(7,-2,1.5);
faicHolder.graphics.endFill();
faicHolder.graphics.lineStyle(3, 0x000000, 0);
faicHolder.graphics.beginFill(0xFFFFFF, 1);
faicHolder.graphics.drawCircle(-7,-3,1);
faicHolder.graphics.drawCircle(7,-3,1);
faicHolder.graphics.endFill();
faicHolder.graphics.lineStyle(3, 0x000000, 1);
faicHolder.graphics.moveTo(-12, 12);
faicHolder.graphics.curveTo(0, -8, 12, 12);
faicHolder.x = stage.stageWidth/2;
faicHolder.y = stage.stageHeight / 2;
faicHolder.addEventListener(Event.ENTER_FRAME, animateFaic);
animatedFaicHolder.addChild(faicHolder);
return animatedFaicHolder;
}
private function animateFaic(e:Event):void
{
scale = Math.sin(counter / deg2Rad) + 2;
e.target.scaleX = e.target.scaleY = scale;
if(++counter > 360) counter = 0;
e.target.rotation += 5;
if (toggle)
{
e.target.x = mouseX;
e.target.y = mouseY;
}
else
{
e.target.x = stage.stageWidth * Math.random();
e.target.y = stage.stageHeight * Math.random();
}
}
private function bgAnimation():void
{
for (i = 0; i < 5000; i++) {
bitmapData.setPixel(Math.floor(Math.random()*bitmapData.width), Math.floor(Math.random()*(bitmapData.height)), Math.floor(Math.random()*(Math.pow(16, 6))));
}
}
private function drawFaic():void
{
bitmapData.draw(faicHolder);
}
private function blurTheShitOutOfTheBackground():void
{
bitmapData.applyFilter(bitmapData, bitmapData.rect, new Point(0, 0), new BlurFilter(2, 2, 3));
}
private function distortTheFuckOutOfTheBackground():void {
fogBitmapData.perlinNoise(50, 50, 1, Math.ceil(Math.random()*100), true, false, 1, false);
var distorter:DisplacementMapFilter = new DisplacementMapFilter(fogBitmapData, null, BitmapDataChannel.RED, BitmapDataChannel.RED, -10 + Math.random()*5, -10 - Math.random()*5, "clamp");
bitmapData.applyFilter(bitmapData, bitmapData.rect, new Point(0,0), distorter);
fogBitmap.visible = false;
}
private function seriouslyThisIsGettingOutOfHand():void {
var scaleMat:Matrix = new Matrix();
scaleMat.translate(-stage.stageWidth, -stage.stageHeight);
scaleMat.scale(1.006, 1.006);
scaleMat.rotate((2)*(Math.PI/180));
scaleMat.translate(stage.stageWidth, stage.stageHeight);
bitmapData.draw(bitmapData, scaleMat);
}
private function onClick(e:MouseEvent):void
{
toggle = !toggle;
if (toggle) Mouse.hide() else Mouse.show();
}
}
}