flash animation video tutorials

 

 

 

 

 

START LEARNING
FLASH NOW

Get instant access to over
45 minutes of FREE Flash tutorials on video
 and our newsletter.

Name:
E-Mail:

.

.

.

 
Web video-animation.com

.

.

Deamothul's Shape Classes for Flash Actionscript 2.0

These classes were written by my buddy Deamothul in response to my Graphics class. I have put them up to show where you can go with AS2.
They are also an excellent example of a very useful implementation of inheritance.
Shapes is a standard teaching tool for inheritance in OOP. But these classes actually have a functional usage.
I will do some more work on examples of how to use them later.

First up is the super class "Shapes". All the other classes on this page are inherited from this.

class Shapes extends MovieClip{
var mc;
var color:String;
var fill:String;
var thick:Number;
	function Shapes(_mcString:String,_dep:Number){
	 mc = _root.createEmptyMovieClip(_mcString,_dep);
	 color = "0x0000ff";
	 fill = "0xff0000";
	 thick = 1;
}
	public function setColor(_color:String){
 	color = _color;
}
public function setFill(_fill:String){
 	fill = _fill;
}
public function setThick(_thick:Number){
 	thick = _thick;
}
function drawLine(x1:Number, y1:Number, x2:Number, y2:Number) {
	 mc.lineStyle(thick, color);
	 mc.moveTo(x1, y1);
	 mc.lineTo(x2, y2);
}
}

Flash Tutorials in Video Format - Watch them now at LearnFlash.com  

Sub class Circle

class Circle extends Shapes{
var radius:Number;

//CONSTRUCTOR
function Circle(_mcString:String,_dep:Number){
 super(_mcString,_dep);//call the super class
 trace("circle class initiated")
}

//Member makes a shape 22.5 is a circle, made via the super class :)
function filledCircle(r:Number,x:Number,y:Number,styleMaker:Number){
mc.moveTo(x+r,y);
mc.lineStyle(thick, color);
mc.beginFill(fill)
var style:Number = Math.tan(styleMaker*Math.PI/180);
for (var angle:Number=45;angle<=360;angle+=45){
var endX:Number=r * Math.cos(angle*Math.PI/180);
 var endY:Number=r * Math.sin(angle*Math.PI/180);
 var cX:Number= endX + r* style * Math.cos((angle-90)*Math.PI/180);
 var cY:Number= endY + r* style * Math.sin((angle-90)*Math.PI/180);
 mc.curveTo(cX+x,cY+y,endX+x,endY+y);
}
mc.endFill();
}

//GRADIENT SHAPE
function gradientCircle(r:Number,x:Number,y:Number,styleMaker:Number,
	col1:Number,col2:Number,fa1:Number,fa2:Number,matrixX:Number,
	matrixY:Number,matrixW:Number,matrixH:Number){
mc.lineStyle(thick, color);
mc.moveTo(x+r,y);
var colors:Array = [col1 ,col2];
var alphas:Array = [ fa1, fa2 ];
var ratios:Array = [ 7, 0xFF ];
var matrix:Object = { matrixType:"box", x:matrixX, y:matrixY,
	 w:matrixW, h:matrixH, r:(45/180)*Math.PI };
mc.beginGradientFill( "linear", colors, alphas, ratios, matrix );
var style:Number = Math.tan(styleMaker*Math.PI/180);
 for (var angle:Number=45;angle<=360;angle+=45){
   var endX:Number = r * Math.cos(angle*Math.PI/180);
   var endY:Number = r * Math.sin(angle*Math.PI/180);
    var cX:Number  = endX + r* style * Math.cos((angle-90)*Math.PI/180);
   var cY:Number = endY + r* style * Math.sin((angle-90)*Math.PI/180);
  mc.curveTo(cX+x,cY+y,endX+x,endY+y);
 }
mc.endFill()
}
}//ends class

Sub class Hexagon

class Hexagon extends Shapes{

function Hexagon(_mcString:String,_dep:Number){
 super(_mcString,_dep);
}

// Makes a north south Hexagon 
public function nonFilledHexagon_NS(hexRadius:Number){
 var sideC:Number=hexRadius;
 var sideA:Number = 0.5 * sideC;
 var sideB:Number=Math.sin(62)* sideC;
 mc.lineStyle(thick,color,100)
 mc.moveTo(0,(sideA+sideC))
 mc.lineTo(0,sideA);
 mc.lineTo(sideB,0);
 mc.lineTo((2*sideB),sideA);
 mc.lineTo((2*sideB),sideA+sideC);
 mc.lineTo(sideB,(2*sideC));
 mc.lineTo(0,sideA+sideC);
};

// Makes a east west Hexagon 
public function nonFilledHexagon_EW(hexRadius:Number){
 var sideC:Number=hexRadius;
 var sideA:Number = 0.5 * sideC;
 var sideB:Number=Math.sin(62)* sideC;
 mc.lineStyle(thick,color,100)
 mc.moveTo(0,sideB)
 mc.lineTo(sideA,0);
 mc.lineTo((sideA+sideC),0);
 mc.lineTo((2*sideC),sideB);
 mc.lineTo((sideA+sideC),(2*sideB));
 mc.lineTo(sideA,(2*sideB));
 mc.lineTo(0,sideB);
};

//makes a nort south filled Hexagon
public function filledHexagon_NS(hexRadius:Number){
 var sideC:Number=hexRadius;
 var sideA:Number = 0.5 * sideC;
 var sideB:Number=Math.sin(62)* sideC;
 mc.lineStyle(thick,color,100)
 mc.beginFill(fill)
 mc.moveTo(0,(sideA+sideC))
 mc.lineTo(0,sideA);
 mc.lineTo(sideB,0);
 mc.lineTo((2*sideB),sideA);
 mc.lineTo((2*sideB),sideA+sideC);
 mc.lineTo(sideB,(2*sideC));
 mc.lineTo(0,sideA+sideC);
 mc.endFill()
};

// Makes a east west Hexagon filled
public function filledHexagon_EW(hexRadius:Number){
 var sideC:Number=hexRadius;
 var sideA:Number = 0.5 * sideC;
 var sideB:Number=Math.sin(62)* sideC;
 mc.lineStyle(thick,color,100)
 mc.beginFill(fill)
 mc.moveTo(0,sideB)
 mc.lineTo(sideA,0);
 mc.lineTo((sideA+sideC),0);
 mc.lineTo((2*sideC),sideB);
 mc.lineTo((sideA+sideC),(2*sideB));
 mc.lineTo(sideA,(2*sideB));
 mc.lineTo(0,sideB);
 mc.endFill()
};

//makes a nort south Garient filled Hexagon
public function gradientHexagon_NS(hexRadius:Number,col1:Number,
	col2:Number,fa1:Number,fa2:Number,matrixX:Number,
	matrixY:Number,matrixW:Number,matrixH:Number){
 var sideC:Number=hexRadius;
 var sideA:Number = 0.5 * sideC;
 var sideB:Number=Math.sin(62)* sideC;
 mc.lineStyle(thick,color,100)
 mc.moveTo(0,(sideA+sideC))
 var colors:Array = [col1 ,col2];
 var alphas:Array = [ fa1, fa2 ];
 var ratios:Array = [ 7, 0xFF ];
 var matrix:Object={ matrixType:"box", x:matrixX, y:matrixY, 
 	w:matrixW, h:matrixH, r:(45/180)*Math.PI };
 mc.beginGradientFill("linear",colors,alphas,ratios,matrix );
 mc.lineTo(0,sideA);
 mc.lineTo(sideB,0);
 mc.lineTo((2*sideB),sideA);
 mc.lineTo((2*sideB),sideA+sideC);
 mc.lineTo(sideB,(2*sideC));
 mc.lineTo(0,sideA+sideC);
 mc.endFill()
};
// hexagon_sub4.gradientHexagon_NS(60,0xaa0000,
// 0xaa0000,20,60,100,100,50,50)

// Makes a east west Hexagon gradient filled
public function gradientHexagon_EW(hexRadius:Number,
                      col1:Number,col2:Number,
                    fa1:Number,fa2:Number, 
                      matrixX:Number,matrixY:Number,
             matrixW:Number,matrixH:Number){
var sideC:Number=hexRadius;
var sideA:Number = 0.5 * sideC;
var sideB:Number=Math.sin(62)* sideC;
mc.lineStyle(thick,color,100)
mc.beginFill(fill)
mc.moveTo(0,sideB);
var colors:Array = [col1 ,col2];
var alphas:Array = [ fa1, fa2 ];
var ratios:Array = [ 7, 0xFF ];
var matrix:Object = { matrixType:"box", x:matrixX, 
y:matrixY, w:matrixW, h:matrixH, r:(45/180)*Math.PI };
mc.beginGradientFill( "linear", colors, alphas, ratios, matrix );
mc.lineTo(sideA,0);
mc.lineTo((sideA+sideC),0);
mc.lineTo((2*sideC),sideB);
mc.lineTo((sideA+sideC),(2*sideB));
mc.lineTo(sideA,(2*sideB));
mc.lineTo(0,sideB);
mc.endFill()
};
// hexagon_sub4.gradientHexagon_EW(60,0xaa0000,
//     0xaa0000,20,60,100,100,50,50)

public function nonFilledHexagon_style2(hexRadius:Number, startX, startY){
var sideC:Number=hexRadius;
var sideA:Number = 0.5 * sideC;
var sideB:Number=Math.sqrt((hexRadius*hexRadius) - 
(0.5*hexRadius)* (0.5*hexRadius)); 
mc.lineStyle(thick,color,100)
mc.moveTo(startX,startY)
mc.lineTo(startX,sideC+ startY);
mc.lineTo(sideB+startX,startY+sideA+sideC);  // bottom point
mc.lineTo(2*sideB + startX , startY + sideC);
mc.lineTo(2*sideB + startX , startY);
mc.lineTo(sideB + startX, startY - sideA);
mc.lineTo(startX, startY);
};
 //usage would be drawHexagon(sideLength, startX , start Y) 

public function filledHexagon_style2(hexRadius:Number, startX, startY){
var sideC:Number=hexRadius;
var sideA:Number = 0.5 * sideC;
var sideB:Number=Math.sqrt((hexRadius*hexRadius) -
 (0.5*hexRadius)* (0.5*hexRadius));
 mc.lineStyle(thick,color,100)
 mc.beginFill(fill);
 mc.moveTo(startX,startY)
 mc.lineTo(startX,sideC+ startY);
 mc.lineTo(sideB+startX,startY+sideA+sideC);  // bottom point
 mc.lineTo(2*sideB + startX , startY + sideC);
 mc.lineTo(2*sideB + startX , startY);
 mc.lineTo(sideB + startX, startY - sideA);
 mc.lineTo(startX, startY);
 mc.endFill();
};
//usage would be fillHexagon(sideLength, startX , start Y)

};//class ends

Sub class Line

class Line extends Shapes{

function Line(_mcString:String,_dep:Number){
 super(_mcString,_dep);
};

//A LINE:
public function drawLine(x1:Number, y1:Number, 
                 x2:Number, y2:Number) {
  mc.lineStyle(thick, color);
 mc.moveTo(x1, y1);
  mc.lineTo(x2, y2);
};

//A CURVED LINE:
function drawCurve(startX:Number,
          startY:Number,curveControlX:Number,
	curveControlY:Number,endX:Number,endY:Number){
  mc.lineStyle(thick,color);
  mc.moveTo(startX,startY);
 mc.curveTo(curveControlX,curveControlY,endX,endY);
};
}

Sub class Square

class Square extends Shapes{

function Square(_mcString:String,_dep:Number){
 super(_mcString,_dep);
}

//A NON FILLED RECTANGLE
public function nonFilledSquare(x1:Number, y1:Number,
                  width:Number, height:Number) {
  mc.lineStyle(thick, color);
  mc.moveTo(x1, y1);
  mc.lineTo(x1+width, y1);
  mc.lineTo(x1+width, y1+height);
  mc.lineTo(x1, y1+height);
  mc.lineTo(x1, y1);
}

//FILLED RECTANGLE
public function filledSquare(x1:Number, 
  y1:Number, width:Number, height:Number) {
  mc.lineStyle(thick, color);
  mc.moveTo(x1, y1);
  mc.beginFill(fill);
  mc.lineTo(x1+width, y1);
  mc.lineTo(x1+width, y1+height);
  mc.lineTo(x1, y1+height);
  mc.lineTo(x1, y1);
  mc.endFill();
}

//GRADIENT RECTANGLE
public function gradientSquare(x1:Number, 
  y1:Number, width:Number, height:Number,
	col1:Number,col2:Number,fa1:Number,
	fa2:Number,matrixX:Number,matrixY:Number,
	matrixW:Number,matrixH:Number){
 mc.lineStyle(thick,color);
 var colors:Array = [col1 ,col2];
 var alphas:Array = [ fa1, fa2 ];
 var ratios:Array = [ 7, 0xFF ];
 var matrix:Object = { matrixType:"box",
  x:matrixX, y:matrixY, 
 	w:matrixW, h:matrixH, r:(45/180)*Math.PI };
 mc.moveTo(x1,y1);
 mc.beginGradientFill( "linear", colors, 
 alphas, ratios, matrix );
 mc.lineTo(x1+width, y1);
 mc.lineTo(x1+width, y1+height);
 mc.lineTo(x1, y1+height);
 mc.lineTo(x1, y1);
 mc.endFill();
}
}

Sub class Triangle

class Triangle extends Shapes{

function Triangle(_mcString:String,_dep:Number){
 super(_mcString,_dep);
}

function nonFilledTriangle(x1:Number,y1:Number,
       x2:Number,y2:Number,x3:Number,y3:Number){
mc.lineStyle(thick,color);
mc.moveTo(x1,y1);
mc.lineTo(x2,y2);
mc.lineTo(x3,y3);
mc.lineTo(x1,y1);
};
//e.g nonFilledTriangle(0,0,50,-100,100,0);

function filledTriangle(x1:Number,y1:Number,
    x2:Number,y2:Number,x3:Number,y3:Number){
mc.lineStyle(thick,color);
mc.moveTo(x1,y1);
mc.beginFill(fill)
mc.lineTo(x2,y2);
mc.lineTo(x3,y3);
mc.lineTo(x1,y1);
mc.endFill();
};
//e.g nonFilledTriangle(0,0,50,-100,100,0);

function gradientTriangle(x1:Number,
    y1:Number,x2:Number,y2:Number,x3:Number,
	y3:Number,col1:Number,col2:Number,
	fa1:Number,fa2:Number,matrixX:Number,
	matrixY:Number,matrixW:Number,matrixH:Number){
mc.lineStyle(thick,color);
mc.moveTo(x1,y1);
var colors:Array = [col1 ,col2];
var alphas:Array = [ fa1, fa2 ];
var ratios:Array = [ 7, 0xFF ];
var matrix:Object = { matrixType:"box", x:matrixX, y:matrixY, 
	w:matrixW, h:matrixH, r:(45/180)*Math.PI };
mc.beginGradientFill("linear",colors,alphas,ratios,matrix );
mc.lineTo(x2,y2);
mc.lineTo(x3,y3);
mc.lineTo(x1,y1);
mc.endFill();
};
//gradientTriangle(0,0,50,-100,100,0,
//0xaa0000,0xaa0000,20,60,100,100,50,50)
};//ends class

flash 8
.