Code in classes/MainObject.as:
package classes {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.Graphics;
import flash.display.DisplayObjectContainer;
import flash.display.DisplayObject;
import flash.display.CapsStyle;
import flash.display.JointStyle;
import flash.display.LineScaleMode;
import flash.events.*;
import classes.display.colors.COLOR_CODE;
import classes.display.colors.ColorManager;
public class MainObject extends MovieClip{
// PRIVATE STATIC VARS
private static var mainTarget:DisplayObjectContainer;
private static var clip_1:Sprite;
private static var clip_2:Sprite;
private static var clip_3:Sprite;
private static var clip_4:Sprite;
private static var clip_5:Sprite;
private static var clip_6:Sprite;
private static var subSprite_1:Sprite;
private static var subSprite_2:Sprite;
private static var subSprite_3:Sprite;
private static var default_linethickness:Number = 0;
private static var default_lineAlpha:Number = 5;
private static var default_lineColorHigh:Number = 0x000000;
private static var default_lineColorLow:Number = 0x666666;
private static var default_colorAlpha:Number = 0.8;
private static var default_width:Number = 50;
private static var default_height:Number = 50;
// PRIVATE NON STATIC VARS
private var clickOnSquareEvent:MouseEvent;
private var squareWidth:uint;
private var squareHeight:uint;
private var spritesToDraw:uint = 6;
// CONSTRUCTOR
public function MainObject():void{
// constructor code
mainTarget = this;
setSquareSize(80,100);
initSprites(spritesToDraw);
placeSprites(spritesToDraw);
add_SubSprite(clip_6,subSprite_1,20,60,10,10, COLOR_CODE.WHITE);
add_SubSprite(clip_6,subSprite_1,35,40,20,15, COLOR_CODE.GREY);
add_SubSprite(clip_5,subSprite_1,40,20,20,20, COLOR_CODE.BLACK);
//var color:uint = ColorManager.getColorFromIndex(20);
//uncomment the line here above to throw a ColorIndex Error
return;
};
// STATIC METHODS
private static function makeSprite(target:DisplayObjectContainer,
clip:DisplayObjectContainer):Sprite{
clip = new Sprite();
target.addChild(clip);
return clip as Sprite;
};
private static function place(obj:DisplayObjectContainer,x:Number,y:Number):void{
obj.x = x;
obj.y = y;
return;
};
// NON-STATIC METHODS
public function add_SubSprite(target:DisplayObjectContainer,spriteObject:Sprite,
width:Number, height:Number, x:Number, y:Number, color:uint):void{
spriteObject = makeSprite(target, spriteObject);
setSquareSize(width,height);
place(spriteObject, x, y);
drawSquare(spriteObject,color);
return;
};
private function onSpriteHit(hitEvent:MouseEvent,swapParent:Boolean = true):void{
// if swapParent == true as param, the Sprite AND the subSprite will be swapped;
trace(" -------------->");
trace("Clip Modifié = " + hitEvent.target.name);
if(swapParent == true){
hitEvent.target.parent.parent.addChild(hitEvent.target.parent);
}
hitEvent.target.parent.addChild(hitEvent.target);
hitEvent.target.startDrag();
return;
};
private function onSpriteQuit(quitEvent:MouseEvent):void{
quitEvent.target.stopDrag();
return;
};
private function setSquareSize(width:Number = 0,height:Number = 0):void{
if(width <= 0){
squareWidth = default_width;
}else{
squareWidth = width;
}
if(height <= 0){
squareHeight = default_height;
}else{
squareHeight = height;
}
return;
};
private function initSprites(spriteNb:uint):void{
for(var i:uint = 1; i <= spriteNb; i++){
MainObject["clip_" + i] = makeSprite(mainTarget,MainObject["clip_" + i]);
MainObject["clip_" + i].addEventListener(MouseEvent.MOUSE_DOWN,
onSpriteHit, false, 0, false);
MainObject["clip_" + i].addEventListener(MouseEvent.MOUSE_UP,
onSpriteQuit,false,0,false);
}
for(i = 1; i <= spriteNb; i++){
var sprite:Sprite = MainObject["clip_" + i];
var color:uint = ColorManager.getColorFromIndex(i);
// AVOID the switch block in tis class by using
// ColorManager.getColorFromIndex static method.
drawSquare(sprite,color);
}
return;
};
private function placeSprites(spriteNb:uint):void{
for(var i:uint = 1; i <= spriteNb; i++){
var margin_top:uint = 100;
var margin_left:uint = 100;
var vertical_decay:Number = - 52;
var horizontal_decay:Number = - 52
place(MainObject["clip_" + i],
(margin_left + ((i-1) * squareWidth))+((i-1) * horizontal_decay),
(margin_top + ((i-1) * squareWidth))+((i-1) * vertical_decay)
);
}
return;
};
private function drawSquare(sprite:Sprite,color:uint):void{
var graph:Graphics = sprite.graphics;
graph.clear();
graph.moveTo(0,squareHeight);
graph.lineStyle(default_linethickness,default_lineColorHigh,default_lineAlpha,
false,LineScaleMode.NONE,CapsStyle.NONE,JointStyle.ROUND);
graph.beginFill(color,default_colorAlpha);
graph.lineTo(0,0);
graph.lineTo(squareWidth,0);
graph.lineStyle(default_linethickness,default_lineColorLow,default_lineAlpha,
false,LineScaleMode.NONE,CapsStyle.NONE,JointStyle.ROUND);
graph.lineTo(squareWidth,squareHeight);
graph.lineTo(0,squareHeight);
return;
};
}
}