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.

Download Fla Sample

Download Fla Sample

I know this script is not perfect. I might update it in the near future to use bitmaps instead of movieclips, among other things.

Tags: , , , , , , , , , , , ,

AS3 Dynamic Mouse Trailer with Gravity

Friday, March 26th, 2010 | AS3 Effects | No Comments

This is a basic AS3 mouse trailer sparkle effect with gravity.

?View Code ACTIONSCRIPT
/**
 * 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);
				}
			}
		}
 
	}
 
}
Download Fla Sample

Download Fla Sample

Tags: , , , , , ,

AS3 Dynamic Mouse Trailer

Friday, March 26th, 2010 | AS3 Effects | No Comments

This is a basic AS3 mouse trailer sparkle effect.

?View Code ACTIONSCRIPT
/**
 * 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 &lt; particleTotal; i++)
			{
				var particle_mc:MovieClip = new Particle();
 
				//set position &amp; 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 &lt; 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 &lt;= 0)
				{
					destroyParticle(tempParticle);
				}
				// if fragment is out of bounds, increase fade out speed
				else if (tempParticle.x &lt; tempParticle.boundyLeft ||
						tempParticle.x &gt; tempParticle.boundyRight ||
						tempParticle.y &lt; tempParticle.boundyTop ||
						tempParticle.y &gt; tempParticle.boundyBottom)
				{
					tempParticle.fadeSpeed += .05;
				}
			}
		}
 
		private function destroyParticle(particle:MovieClip):void
		{
			for (var i = 0; i &lt; particleArray.length; i++)
			{
				var tempParticle:MovieClip = particleArray[i];
				if (tempParticle == particle)
				{
					particleCurrentAmount--;
					particleArray.splice(i,1);
					removeChild(tempParticle);
				}
			}
		}
 
	}
 
}
Download Fla Sample

Download Fla Sample

Tags: , , , ,