AS3 Effects
Endless Starfield - Parallax Scrolling
AS3 version of my endless starfield & parallax scrolling effect. This is a huge improvement over the last script in terms of performance and ease-of-use.
This version lets you set the width, height, and speed of the starfield, as well as position it anywhere on stage by setting the X & Y coordinates (old version only allowed it to be fullscreen).
This is great because you’ll now be able to use it in games (top-down and side scrollers), any size banners (horizontal or skyscrapers), and anywhere else you need the effect.
Using it is pretty simple:
createField(containerMC, x, y, width, height, numberOfStars, speedX, speedY);
See Main.as for exact usage examples.
I know this script is not perfect. I might update it in the near future to use bitmaps instead of movieclips, among other things.
AS3 Dynamic Mouse Trailer with Gravity
This is a basic AS3 mouse trailer sparkle effect with gravity.
/** * Dynamic Mouse Trailer with Gravity * --------------------- * VERSION: 1.0 * DATE: 3/13/2010 * AS3 * UPDATES AND DOCUMENTATION AT: http://www.FreeActionScript.com **/ package com.freeactionscript { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class MouseTrailer extends Sprite { // Vars private var particleArray:Array; // Settings private var particleMaxSpeed:Number = 1; private var particleFadeSpeed:Number = .025; private var particleTotal:Number = 3; private var particleRange:Number = 25; private var particleCurrentAmount:Number = 0; public function MouseTrailer() { } public function init():void { particleArray = []; addEventListener(Event.ENTER_FRAME, onEnterFrameLoop); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); } private function onEnterFrameLoop(event:Event):void { updateParticle(); } private function mouseMoveHandler(event:Event):void { createParticle(stage.mouseX, stage.mouseY); } /** * createParticle(target X position, target Y position) */ function createParticle(targetX:Number, targetY:Number):void { //run for loop based on particleTotal for (var i:Number = 0; i < particleTotal; i++) { var particle_mc:MovieClip = new Particle(); //set position & rotation, alpha particle_mc.x = targetX particle_mc.y = targetY particle_mc.rotation = Math.random() * 360; particle_mc.alpha = Math.random() * .5 + .5; //set particle boundry particle_mc.boundyLeft = targetX - particleRange; particle_mc.boundyTop = targetY - particleRange; particle_mc.boundyRight = targetX + particleRange; particle_mc.boundyBottom = targetY + particleRange; //set speed/direction of fragment particle_mc.speedX = Math.random() * particleMaxSpeed - Math.random() * particleMaxSpeed; particle_mc.speedY = Math.random() * particleMaxSpeed + Math.random() * particleMaxSpeed; particle_mc.speedX *= particleMaxSpeed particle_mc.speedY *= particleMaxSpeed //set fade out speed particle_mc.fadeSpeed = Math.random()*particleFadeSpeed; //just a visual particle counter particleCurrentAmount++; // add to array particleArray.push(particle_mc); // add to display list addChild(particle_mc); } } private function updateParticle():void { for (var i = 0; i < particleArray.length; i++) { var tempParticle:MovieClip = particleArray[i]; //update alpha, x, y tempParticle.alpha -= tempParticle.fadeSpeed; tempParticle.x += tempParticle.speedX; tempParticle.y += tempParticle.speedY; // if fragment is invisible remove it if (tempParticle.alpha <= 0) { destroyParticle(tempParticle); } // if fragment is out of bounds, increase fade out speed else if (tempParticle.x < tempParticle.boundyLeft || tempParticle.x > tempParticle.boundyRight || tempParticle.y < tempParticle.boundyTop || tempParticle.y > tempParticle.boundyBottom) { tempParticle.fadeSpeed += .05; } } } private function destroyParticle(particle:MovieClip):void { for (var i = 0; i < particleArray.length; i++) { var tempParticle:MovieClip = particleArray[i]; if (tempParticle == particle) { particleCurrentAmount--; particleArray.splice(i,1); removeChild(tempParticle); } } } } } |
AS3 Dynamic Mouse Trailer
This is a basic AS3 mouse trailer sparkle effect.
/** * Dynamic Mouse Trailer * --------------------- * VERSION: 1.0 * DATE: 3/13/2010 * AS3 * UPDATES AND DOCUMENTATION AT: http://www.FreeActionScript.com **/ package com.freeactionscript { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; public class MouseTrailer extends Sprite { // Vars private var particleArray:Array; // Settings private var particleMaxSpeed:Number = 1; private var particleFadeSpeed:Number = .05; private var particleTotal:Number = 5; private var particleRange:Number = 25; private var particleCurrentAmount:Number = 0; public function MouseTrailer() { } public function init():void { particleArray = []; addEventListener(Event.ENTER_FRAME, onEnterFrameLoop); } private function onEnterFrameLoop(event:Event):void { createParticle(stage.mouseX, stage.mouseY); updateParticle(); } /** * createParticle(target X position, target Y position) */ function createParticle(targetX:Number, targetY:Number):void { //run for loop based on particleTotal for (var i:Number = 0; i < particleTotal; i++) { var particle_mc:MovieClip = new Particle(); //set position & rotation, alpha particle_mc.x = targetX particle_mc.y = targetY particle_mc.rotation = Math.random() * 360; particle_mc.alpha = Math.random() * .5 + .5; //set particle boundry particle_mc.boundyLeft = targetX - particleRange; particle_mc.boundyTop = targetY - particleRange; particle_mc.boundyRight = targetX + particleRange; particle_mc.boundyBottom = targetY + particleRange; //set speed/direction of fragment particle_mc.speedX = Math.random() * particleMaxSpeed - Math.random() * particleMaxSpeed; particle_mc.speedY = Math.random() * particleMaxSpeed - Math.random() * particleMaxSpeed; particle_mc.speedX *= particleMaxSpeed particle_mc.speedY *= particleMaxSpeed //set fade out speed particle_mc.fadeSpeed = Math.random()*particleFadeSpeed; //just a visual particle counter particleCurrentAmount++; // add to array particleArray.push(particle_mc); // add to display list addChild(particle_mc); } } private function updateParticle():void { for (var i = 0; i < particleArray.length; i++) { var tempParticle:MovieClip = particleArray[i]; //update alpha, x, y tempParticle.alpha -= tempParticle.fadeSpeed; tempParticle.x += tempParticle.speedX; tempParticle.y += tempParticle.speedY; // if fragment is invisible remove it if (tempParticle.alpha <= 0) { destroyParticle(tempParticle); } // if fragment is out of bounds, increase fade out speed else if (tempParticle.x < tempParticle.boundyLeft || tempParticle.x > tempParticle.boundyRight || tempParticle.y < tempParticle.boundyTop || tempParticle.y > tempParticle.boundyBottom) { tempParticle.fadeSpeed += .05; } } } private function destroyParticle(particle:MovieClip):void { for (var i = 0; i < particleArray.length; i++) { var tempParticle:MovieClip = particleArray[i]; if (tempParticle == particle) { particleCurrentAmount--; particleArray.splice(i,1); removeChild(tempParticle); } } } } } |
CategoriesLinks |
