// forked from Kay's String Blur package { import flash.display.* import flash.events.* import flash.filters.* import flash.geom.* import flash.media.* import flash.text.* import flash.net.* import flash.utils.* [SWF(backgroundColor=0x000000, width=400, height=400, frameRate=40)] public class Take01 extends Sprite { private const SW:Number = stage.stageWidth; private const SH:Number = stage.stageHeight; private var bitmapData:BitmapData = new BitmapData (SW, SH, true, 0); private var fBlur:BlurFilter = new BlurFilter (8, 0, 1); private var point:Point = new Point(0,0); private var ct:ColorTransform = new ColorTransform (1, 1, 1); private var bitmapDataN:BitmapData = new BitmapData (10, 10, false, 0); private var bitmapDataT1:BitmapData = bitmapData.clone (); private var bitmapDataT2:BitmapData = bitmapData.clone (); private var bitmapDataT3:BitmapData = bitmapData.clone (); private var scaleMat:Matrix = new Matrix (SW / bitmapDataN.width, 0, 0, SH / bitmapDataN.height); private var offsetMat:Matrix = new Matrix (1, 0, 0, 1, SW/2, SH/2); private var textMat:Matrix = new Matrix; private var textAngle:Number = 0; private var s:Sound; private var ba:ByteArray = new ByteArray (); public function Take01():void { var tFormat:TextFormat = new TextFormat(); tFormat.size = 60; tFormat.font = "Arial Black"; tFormat.color = 0xffffff//0000cc; var tField:TextField = new TextField(); tField.defaultTextFormat = tFormat; tField.selectable = false; tField.autoSize = TextFieldAutoSize.LEFT; tField.text = "wonderfl"; offsetMat.tx -= tField.width/2; offsetMat.ty -= tField.height/2; bitmapDataT2.draw (tField, offsetMat); addEventListener(Event.ENTER_FRAME, rotate); graphics.beginBitmapFill(bitmapData); graphics.drawRect(0,0,SW,SH); graphics.endFill(); var w:Sprite = new Sprite; w.graphics.beginBitmapFill(bitmapDataT3); w.graphics.drawRect(0,0,SW,SH); w.graphics.endFill(); addChild (w); s = new Sound (); s.addEventListener (Event.COMPLETE, completeHandler); s.load (new URLRequest ("http://www.helpexamples.com/flash/sound/song3.mp3"), new SoundLoaderContext (1000, true)); } private function rotate(e:Event):void { // and now, for something completely different... var sc:Number = 0.3; SoundMixer.computeSpectrum (ba, true); for (var k:int = 0; k < 5; k++) sc += Math.abs (ba.readFloat ()) * 0.6; ct.redMultiplier = 0.5 + Math.abs (ba.readFloat ()); ct.greenMultiplier = 0.5 + Math.abs (ba.readFloat ()); ct.blueMultiplier = 0.5 + Math.abs (ba.readFloat ()); textAngle += 0.1; if (textAngle > 2 * Math.PI) textAngle -= 2 * Math.PI; textMat.identity (); textMat.translate (-SW/2, -SH/2); textMat.scale (sc, sc); textMat.rotate (textAngle); textMat.translate (+SW/2, +SH/2); bitmapDataN.noise (256 * Math.random (), 1, 255, 7, true); bitmapDataT1.draw (bitmapDataN, scaleMat, null, "normal", null, true); bitmapDataT1.copyChannel (bitmapDataT2, bitmapDataT2.rect, point, BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA); bitmapData.draw(bitmapDataT1, textMat); bitmapData.applyFilter(bitmapData,bitmapData.rect,point,fBlur); bitmapData.colorTransform (bitmapData.rect, ct); bitmapDataT3.fillRect (bitmapDataT3.rect, 0); bitmapDataT3.draw (bitmapDataT2, textMat, null, "normal", null, true); } private function completeHandler (event:Event):void { // start & loop playback var song:SoundChannel = s.play (); song.addEventListener (Event.SOUND_COMPLETE, completeHandler); } } } forked from: String Blur