Toggle navigation
Sign Up
Log In
Explore
Works
Folders
Tools
Collections
Artists
Groups
Groups
Topics
Tasks
Tasks
Jobs
Teams
Jobs
Recommendation
More Effects...
ActionScript
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.IBitmapDrawable; import flash.display.Sprite; import flash.events.Event; import flash.filters.BlurFilter; import flash.filters.GlowFilter; import flash.geom.ColorTransform; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; [SWF(backgroundColor="#000000", width = "650", height = "650")] public class BitFire extends Sprite { private const NUM_P : int = 1 << 17; /* */ private var ppp : Vector.
; private var bmd : BitmapData; private var srcBmd : BitmapData; private var src : Sprite; private var tf : TextField; private var buf : Vector.
; private var ct : ColorTransform; private var blur : BlurFilter; private var t : int; private var pcnt : int; private var ccnt : int; function BitFire() { stage.stageFocusRect = mouseEnabled = tabEnabled = tabChildren = false; stage.scaleMode = "noScale"; stage.align = "TL"; stage.quality = "low"; stage.frameRate = 64; opaqueBackground = 0x0; bmd = new BitmapData(512, 512, false, 0x0); srcBmd = new BitmapData(512, 512, false, 0x0); buf = new Vector.
(512 * 512, true); var bm : Bitmap = new Bitmap(bmd); bm.x = bm.y = (650 - 512) >> 1; bm.opaqueBackground = 0x0; addChild(bm); /* p */ ppp = new Vector.
(NUM_P, true); var n : uint = NUM_P; while (n-- != 0) { var p : Particle = new Particle(); var f : Number = n / NUM_P; var a : Number = (2 * 6.283185307179586) * f; var nn : int = (n & 255); p.x = p.tx = p.ex = 256 + (512 - 128 + nn) * Math.cos(a); p.y = p.ty = p.ey = 256 + (512 - 128 + nn) * Math.sin(a); p.tt = (n & 127) >> 1; p.t = -p.tt; p.td = 1; ppp[n] = p; } tf = new TextField(); tf.defaultTextFormat = new TextFormat("_sans", 222, 0xFFFFFF, true); tf.autoSize = TextFieldAutoSize.LEFT; src = new Sprite(); src.addChild(tf); ct = new ColorTransform(0.975, 0.95, 0.915); blur = new BlurFilter(4.0, 4.0, 1); addEventListener(Event.ENTER_FRAME, oef); } private function oef(e : Event) : void { t++; if ((t & 127) == 1) { ccnt++; tf.text = (((ccnt & 31) < 10) ? "0" : "") + String(ccnt & 31); tf.x = (512 - tf.width) / 2; tf.y = (512 - tf.height) / 2; tf.textColor = 0xFF4000; tf.filters = [new GlowFilter(tf.textColor, 1.0, 8.0, 8.0, 2, 1)]; atomize(src); } bmd.lock(); bmd.colorTransform(bmd.rect, ct); bmd.applyFilter(bmd, bmd.rect, bmd.rect.topLeft, blur); buf = bmd.getVector(bmd.rect); var n : uint = NUM_P - (t & 1); while (n > 2) { n--; n--; var p : Particle = ppp[n]; var dx : Number = p.ex - 256; var dy : Number = p.ey - 256; p.ex = 256 + ((0.9998476951563913) * dx - (0.01745240643728351) * dy); p.ey = 256 + ((0.9998476951563913) * dy + (0.01745240643728351) * dx); var c0 : uint = bmd.getPixel(p.x >> 0, p.y >> 0); var r : uint = (c0 >> 16); var g : uint = (c0 >> 8 & 0xFF); var b : uint = (c0 & 0xFF); p.t += p.td; if (p.t < 0) { p.x += (p.tx - p.x) * 0.15; p.y += (p.ty - p.y) * 0.15; } else { p.x += (p.ex - p.x) * 0.0077; p.y += (p.ey - p.y) * 0.0077; } r += 0x28; g += 0x26; b += 0x24; if (r > 0xFF) r = 0xFF; if (g > 0xF8) g = 0xF8; if (b > 0xF0) b = 0xF0; buf[(p.x & 511) + ((p.y & 511) << 9)] = (r << 16 | g << 8 | b); } bmd.setVector(bmd.rect, buf); bmd.unlock(); } private function atomize(src : IBitmapDrawable) : void { srcBmd.fillRect(srcBmd.rect, 0x0); srcBmd.draw(src); var p : Particle; var n : uint = NUM_P; while (--n != 0) { p = ppp[n]; if (p.td < 0) { p.t = -p.tt; p.td = 1; } } var pos : int = (512 * 512) - (512 << 7) - (ccnt & 1); while (pos > (512 << 7)) { pos--; pos--; var tx : int = pos & 511; var ty : int = pos >> 9; var tc : uint = srcBmd.getPixel(tx, ty); if (tc == 0x0) continue; pcnt++; p = ppp[pcnt & (NUM_P - 1)]; if (p.td > 0) { p.td = -1; } p.tx = tx; p.ty = ty; } } } } internal class Particle { public var t : int; public var tt : int; public var td : int; public var x : Number; public var y : Number; public var tx : int; public var ty : int; public var ex : Number; public var ey : Number; }
Join Effecthub.com
Working with Global Gaming Artists and Developers!
Login
Sign Up
Or Login with Your Email Address:
Email
Password
Remember
Or Sign Up with Your Email Address:
Your Email
This field must contain a valid email
Set Password
Password should be at least 1 character
Stay informed via email