/* * Petri Leskinen * leskinen[dot]petri[at]luukku[dot]com * Espoo, Finland * 12.3 2008 */ package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMode; import flash.display.Sprite; import flash.display.Stage; import flash.display.GradientType; import flash.events.*; import flash.filters.ColorMatrixFilter; import flash.filters.ConvolutionFilter; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Point; import flash.geom.Rectangle; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; import flash.ui.Mouse; public class BubblerGroup extends Sprite { private var bubbles:Array; // private var inputBox:TextField = new TextField(); public var txt3D:String = "Text"; private var txtFields:Array; function BubblerGroup () { cacheAsBitmap = true; bubbles= new Array(); var i:int=0; var diameter:Number; for (i=0; i<50; i++) { // added 'bubbles' to the scene diameter = (i == 0) ? 62.0 : Math.random()*40.0+30.0; bubbles[i]= new Bubble(diameter); addChild(bubbles[i]); // choosing a random position on the scene bubbles[i].place(Math.random()*250+50, Math.random()*250+70); // colorTransform gives the 3D- effect of being closer or deeper bubbles[i].transform.colorTransform= new ColorTransform(0.0, 0.0, diameter/70.0, 1.0); // bubbles[0]'s the one that follows the mouse if (i != 0) bubbles[i].activate(); } // Showing the effect also on a text element ! generateText( txt3D ); // ColorMatrixFilter copies the colors from blue-channel adding some tone var colm:ColorMatrixFilter = new ColorMatrixFilter([ 0, 0, -1, 0, 150, 0, 0, 1.5, 0, -128, 0, 0, 1.5, 0, -128, 0, 0, 8, 0, -64 ] );// alpha value for softening the edges // blue = 0x08 -> alpha 8*8-64 =0 // Convolution adds the relief-effect var conv:ConvolutionFilter = new ConvolutionFilter( 3.0,3.0, [ 0, -0.5, 1, -0.5, -15, 5, // don't even ask how I came up with these values, ... by trying ! 1, 4, 6 ], 1.0); filters = [ colm , conv ]; stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoved); } private function generateText(txt3D:String):void { var size3D:Number = 12.0; var format:TextFormat = new TextFormat(); format.font = "Garamond"; // forgot to embed that ! format.color = 0xFF0000FF; format.size = 70; txtFields= new Array(); var i:int=0; for (i=0; i>2; y = int(7*y+ _yorig + dst2*po.y) >>3; } }