forked from: forked from: Rotoboobler
Rotoboobler (1,013bytes effect)
by Mr.doob
// forked from mrdoob's forked from: Rotoboobler
// forked from mrdoob's Rotoboobler
//
// Rotoboobler (1,013bytes effect)
// by Mr.doob
//
package
{
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Matrix;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.filters.DisplacementMapFilter;
import flash.utils.getTimer;
public class Rotoboobler extends Sprite
{
private var w : TextField, g : Sprite, gBD : BitmapData, mc : Sprite;
private var i : Number = 0
private var string : String = "Je ne sais pas ce que je cherche...mais parfois je trouve. I don't know what I seek...but sometimes I find."
public function Rotoboobler()
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init( e : Event ) : void
{
stage.align = "TL";
stage.scaleMode = "noScale";
g = new Sprite();
g.blendMode = "multiply";
gBD = new BitmapData( stage.stageWidth, stage.stageHeight, false, 0x000000);
w = new TextField();
w.defaultTextFormat = new TextFormat("Arial", 60);
w.textColor = 0xF7F8F9;
w.autoSize = "left";
mc = new Sprite();
addChild(mc);
addChild(g);
addEventListener( "enterFrame", u );
}
private function u(e : Event) : void
{
i += .5;
var ts:Number = Math.sin( getTimer() * .0003 );
var tc:Number = Math.cos( getTimer() * .0002 );
w.text = string.substr(i % string.length, 50);
var wBD:BitmapData = new BitmapData(w.width,w.height, false, 0x000000);
wBD.draw(w);
g.graphics.clear();
g.graphics.beginGradientFill("radial", [0xffffff, 0x000000], [1, 1], [0x00, 0xff], new Matrix( ts * 0.2 + 0.2, 0, 0, ts * 0.2 + 0.2, stage.stageWidth >> 1, stage.stageHeight >> 1 ), "reflect", "linearRGB" );
g.graphics.drawRect( 0, 0, stage.stageWidth, stage.stageHeight );
gBD.draw(g);
mc.graphics.clear();
mc.graphics.beginBitmapFill(wBD, new Matrix( tc * ts + 1, ts, -ts, tc * ts + 1, 0, 0 ), true, false );
mc.graphics.drawRect( 0, 0, stage.stageWidth, stage.stageHeight );
mc.filters = [ new DisplacementMapFilter( gBD, null, 1, 1, tc * 100, tc * 100, "wrap", 0, 0 ) ];
}
}
}