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});
}
}
}
}
}
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.