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.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.Event; import flash.filters.BlurFilter; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Point; [SWF(width = "465", height = "465", backgroundColor = "0x000613", frameRate = "24")] public class Main extends Sprite{ private static const W:Number = 465; private static const H:Number = 465; private static const FREQUENCY_RANGE:int = 14 private static const GLOW_RANGE:int = 3 private var _particles:Vector.
= new Vector.
(); private var _canvas:BitmapData; private var _glow:BitmapData; private var _ct:ColorTransform; private var _startX:Number; private var _startY:Number; public function Main(){ graphics.beginFill(0x000613) graphics.drawRect(0, 0, W, H) // setUp() } private function setUp():void{ _ct = new ColorTransform(0.9, 0.9, 0.9, 0.98); _canvas = new BitmapData(W, H, false, 0); var canvas:Bitmap = new Bitmap(_canvas, "auto", true); canvas.blendMode = "screen"; _glow = new BitmapData(W / GLOW_RANGE, H / GLOW_RANGE, false, 0); var bm:Bitmap = new Bitmap(_glow, "never", true); bm.scaleX = bm.scaleY = GLOW_RANGE; bm.blendMode = "add"; // addChild(canvas); addChild(bm); addEventListener(Event.ENTER_FRAME, update); } private function createParticle():void { var p:Particle = new Particle(); var radius:Number = Math.sqrt(Math.random())*10; var angle:Number = Math.random() * (Math.PI)*2; p.x = _startX; p.y = _startY; p.vx = Math.cos(angle) * radius; p.vy = Math.sin(angle) * radius; _particles.push(p); } private function colorChange():void{ (_ct.redMultiplier > 0.99)? _ct.redMultiplier = 0.9 : _ct.redMultiplier += 0.003; (_ct.greenMultiplier > 0.99)? _ct.greenMultiplier = 0.9 : _ct.greenMultiplier += 0.006; (_ct.blueMultiplier > 0.99)? _ct.blueMultiplier = 0.9 : _ct.blueMultiplier += 0.009; } private function spark():void{ var n:int = Math.random() * 100 + 150; _startX = Math.random() * (W * 0.6) + (W * 0.2); _startY = Math.random() * H / 4 + 100; while (n--) createParticle(); } private function update(e:Event):void{ _canvas.lock(); _canvas.applyFilter(_canvas, _canvas.rect, new Point(), new BlurFilter(2, 4)); _canvas.colorTransform(_canvas.rect, _ct); // var n:int = _particles.length; while (n--) { var v:Number = Math.random() * 0.14 + 0.85; var p:Particle = _particles[n]; p.vy += 0.2; p.vx *= v; p.vy *= v; p.x += p.vx; p.y += p.vy; _canvas.setPixel(p.x, p.y, p.c); // if ((p.x > stage.stageWidth || p.x < 0) || (p.y < 0 || p.y > stage.stageHeight) || Math.abs(p.vx) < .01 || Math.abs(p.vy) < .01){ _particles.splice(n, 1); } } _canvas.unlock(); _glow.draw(_canvas, new Matrix(1 / GLOW_RANGE, 0, 0, 1 / GLOW_RANGE)); // colorChange() // var frequency:Boolean = Boolean(int(Math.random() * FREQUENCY_RANGE)) if(frequency == false) spark(); } } } // import flash.geom.Point; class Particle extends Point{ public var vx:Number = 0 public var vy:Number = 0 public var c:uint = 0xFFFFFF; }
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