Share your Flash / Actionscript 3 here

FFGL, OSC, GLSL. If you like abbreviations, this is the forum for you
Post Reply
JKarhu
Met Resolume in a bar the other day
Posts: 3
Joined: Thu Aug 08, 2013 22:50

Share your Flash / Actionscript 3 here

Post by JKarhu »

Hi,

I'm new in forum and was thinking that would be cool to share my AS3 animations here. I mean, I've spend hours to make it so why not to share it for greater good?

The following code creates a grid with flashing squares. You can set the stage whatever size you want and the 20x20 pixel grid adjusts in to it. You need TweenMax library for this one, download it here: http://www.greensock.com/tweenmax/

Code: Select all

package
{

	import flash.display.*;
	import flash.display.StageScaleMode;
	import flash.events.*;
	import flash.display.Sprite;
    import flash.geom.Rectangle;
	import flash.geom.ColorTransform;
	import Math;
	import resolumeCom.*;
	import resolumeCom.parameters.*;
	import resolumeCom.events.*;
	import com.greensock.TweenMax;
	import com.greensock.easing.*;
	import com.greensock.plugins.*;

	public class LightGrid_v3 extends MovieClip
	{

		private var resolume:Resolume = new Resolume();
		private var tempo:FloatParameter = resolume.addFloatParameter("Tempo", 0);
		private var col:FloatParameter = resolume.addFloatParameter("Color", 0);
		private var grdAlp:FloatParameter = resolume.addFloatParameter("Grid alpha", 1);
		private var gridCol:FloatParameter = resolume.addFloatParameter("Grid color", 1);
		private var spdSlider:FloatParameter = resolume.addFloatParameter("Animation speed", 0.07);
		private var fadeSlider:FloatParameter = resolume.addFloatParameter("Fade speed", 0.3);
		private var fadeBasic:EventParameter = resolume.addEventParameter("Fade: Basic");
		private var fadeExpo:EventParameter = resolume.addEventParameter("Fade: Expo");
		private var fadeSlowMo:EventParameter = resolume.addEventParameter("Fade: SlowMo");
		private var pad = 3	; // Padding
		private var dim = 20; // Dimensions
		private var top:Number = new Number(); // Top margin
		private var left:Number = new Number(); // Left margin
		private var marg:Number = 20; // Margin
		private var posX = 0 + pad; // Square position on x-axis
		private var posY = 0 + pad; // Square position on y-axis
		private var grdY = 16;
		private var grdX = 24;
		private var stpr:Boolean = false; // Stopper
		private var spd = 0.14; // Speed of blocks
		private var fade = 0; // Faden tyyppi
		private var fSpd = 3; // Faden nopeus
		private var ptrnAm = 0; // Pattern amount
		private var ptrnSz = 3; // Pattern size (in width, how many squares)
		private var newCol:ColorTransform = new ColorTransform();
		private var newGridCol:ColorTransform = new ColorTransform();
		private var colNow = 0; // Current color, works as a stopper for listener event
		private var gridColNow = 3;
		
		public function LightGrid_v3()
		{
			
			
			stage.scaleMode = "noScale";
			
			// Set size and center
			
			grdY = Math.floor(stage.stageHeight / (dim+pad));
			top = ((stage.stageHeight - (grdY*(dim+pad))) / 2);
			
			grdX = Math.ceil(((stage.stageWidth-marg) / (dim+pad)));
			
			if (grdX/ptrnSz != Math.round(grdX/ptrnSz))
			{
				grdX = Math.floor(grdX/ptrnSz) * ptrnSz;
			
			}
			
			left = ((stage.stageWidth - (grdX*(dim+pad)-3)) / 2); // -3 moves the grid to right position: can be removed, if wanted
			resolume.addParameterListener(parameterChanged);
			create();

		}
		
		public function create():void {
			
			// Create grid
			
			var grid:MovieClip = new MovieClip();
			grid.name = "grid_";
			addChild(grid);
			grid.alpha = 1;
			
			for (var b = 0; b < grdY; b++)
			{
				
				posY = (b*dim) + (b*pad) + top;
				for (var a = 0; a < grdX; a++)
				
				{

					posX = (a*dim) + (a*pad) + left;
					
					// l = line, f = fill
					
					var l:Sprite = new Sprite;
					l.graphics.lineStyle(1, 0xFFFFF, 1);
					l.graphics.drawRect(posX, posY, dim, dim);
					l.name = "line_Row" + b + "Col" + a;
					grid.addChild(l);
			
				}
			
			}
			
			// Create lights
			
			for (var k = 0; k < (grdX/ptrnSz); k++)
			{
				
				var ptrn:MovieClip = new MovieClip();
				ptrn.name = "ptrn" + k;
				addChild(ptrn);
				ptrn.alpha = 0.01;
				ptrnAm++;
			
				for (var d = 0; d < grdY; d++)
				{
					
					posY = (d*dim) + (d*pad) + top;
					
					for (var c = (0+(ptrnSz*k)); c < (ptrnSz+(ptrnSz*k)); c++)
					{
	
						posX = (c*dim) + (c*pad) + left;
						
						// l = line, f = fill
						
						var f:Sprite = new Sprite;
						f.graphics.beginFill(0xFFFFFF, 1);
						f.graphics.drawRect(posX-0.5, posY, dim, dim);
						f.graphics.endFill();
						f.name = "fill_Block" + k + "Row" + d + "Col" + c; // This row is not necessary, it only identifies the squares.
						ptrn.addChild(f);
				
					}
				
				}
			
			}
			
		}
		
		public function parameterChanged(e:ChangeEvent):void
		{
			
			// Tempo and speed control
			
			if (e.object == tempo)
			{
				
				var t = Math.round(7*tempo.getValue());
				
				if (t == 0 && !stpr)
				{
					
					stpr = true;
					shootLights();
					
				}
				
				else if (t > 0) {
					
					stpr = false;
					
				}
				
			}
			
			else if (e.object == spdSlider)
			{
				
				spd = spdSlider.getValue()*2;
				
			}
			
			
			// Fade control
			
			else if (e.object == fadeSlider) {
				
				fSpd = Math.round(fadeSlider.getValue()*10)
				
			}
			
			else if (e.object == fadeBasic) {
			
				fade = 0;
			
			}
			
			else if (e.object == fadeExpo) {
			
				fade = 1;
			
			}
			
			else if (e.object == fadeSlowMo) {
			
				fade = 2;
			
			}
			
			// Color control
			
			else if (e.object == col)
			{
				
				var cl = Math.round(3*(col.getValue()));
				
				if (cl == 0 && colNow != 0)
				{
					
					colNow = 0;
					newCol.color = 0xFFFFFF;
					
					for (var w = 0; w < ptrnAm; w++)
					{
					
					getChildByName("ptrn" + w).transform.colorTransform = newCol;
				
					}
					
					
				}
				
				else if (cl == 1 && colNow != 1) {
					
					colNow = 1;
					newCol.color = 0xCC3333;
					
					for (var w = 0; w < ptrnAm; w++)
					{
				
					getChildByName("ptrn" + w).transform.colorTransform = newCol;
					
					}
					
				}
				
				else if (cl == 2 && colNow != 2) {
					
					colNow = 2;
					newCol.color = 0xFFFFF;
					
					for (var w = 0; w < ptrnAm; w++)
					{
				
					getChildByName("ptrn" + w).transform.colorTransform = newCol;
					
					}
					
				}
				
			}
			
			else if (e.object == grdAlp) {
				
				getChildByName("grid_").alpha = grdAlp.getValue();
				
			}
			
			else if (e.object == gridCol)
			{
				
				var gcl = Math.round(3*(gridCol.getValue()));
				
				if (gcl == 0 && gridColNow != 0)
				{
					
					gridColNow = 0;
					newGridCol.color = 0xFFFFFF;
					getChildByName("grid_").transform.colorTransform = newGridCol;
					
				}
				
				else if (gcl == 1 && gridColNow != 1) {
					
					gridColNow = 1;
					newGridCol.color = 0xCC3333;
					getChildByName("grid_").transform.colorTransform = newGridCol;
					
				}
				
				else if (gcl == 2 && gridColNow != 2) {
					
					gridColNow = 2;
					newGridCol.color = 0xFFFFF;
					getChildByName("grid_").transform.colorTransform = newGridCol;
					
				}
				
			}
			
		}
		
		public function shootLights():void {
			
			if (fade == 0) // Basic fade
			{
			
				for (var f = 0; f < ptrnAm; f++)
				{
				
				TweenMax.to(getChildByName("ptrn" + f), 0, {autoAlpha:1, delay:spd*f});
				TweenMax.to(getChildByName("ptrn" + f), fSpd, {autoAlpha:0, delay:(spd*f)+0.1});
			
				}
				
			}
			
			if (fade == 1) // Expo fade
			{
			
				for (var g = 0; g < ptrnAm; g++)
				{
				
				TweenMax.to(getChildByName("ptrn" + g), 0, {autoAlpha:1, delay:spd*g});
				TweenMax.to(getChildByName("ptrn" + g), fSpd, {autoAlpha:0, delay:(spd*g)+spd, ease:Expo.easeOut});
			
				}
				
			}
			
			if (fade == 2) // SlowMo fade
			{
			
				for (var h = 0; h < ptrnAm; h++)
				{
				
				TweenMax.to(getChildByName("ptrn" + h), 0, {autoAlpha:1, delay:spd*h});
				TweenMax.to(getChildByName("ptrn" + h), fSpd, {autoAlpha:0, delay:(spd*h)+spd, ease:SlowMo.ease});
			
				}
				
			}
		
		}
		
	}
	
}
Hope you like it! There still might be some useless rows, but it's tested live and it works.

Oh, and I'm new on the forum, I don't know if this is the right place to share this kind of stuff but couldn't find any other thread.

c023-dev
Met Resolume in a bar the other day
Posts: 4
Joined: Tue Aug 06, 2013 09:39

Re: Share your Flash / Actionscript 3 here

Post by c023-dev »

Hi,

nice to see some code going, thanks for sharing!
Why not post a capured GIF or utube vid to preview your work, too? (nifty tool for capturing gifs of the desktop: http://www.cockos.com/licecap/ ) That would make it easier for us to relate.

And I'm new here too but I hope to be posting some stuff soon... its a bit messy atm... =)

What are you compiling it with?
I've just got it running out of FlashDevelop and using the Flixel Game lib ... SO MUCH FUN! =)

JKarhu
Met Resolume in a bar the other day
Posts: 3
Joined: Thu Aug 08, 2013 22:50

Re: Share your Flash / Actionscript 3 here

Post by JKarhu »

You're probably right, I should post a screencap or something, I'm going to do it soon.

I'm just using the Adobes developer tool. Gotta check out Flixel, seems quite interesting.

Post Reply