book

AS3 Change Depths with swapChildren, or add

AS3 SwapChildren - add VS
swapDepth (deprecated)

AS3 file Structure


back to nicolas.pirson.me index / tatactic.be

Thanks to http://www.as3dtk.com/?p=493&cpage=1#comment-480
A main.fla file in a folder (eg : flaFolder/main.fla)
In flaFolder/classes :
  • MainObject.as
  • A folder called classes
    • inside classes/display/colors
      • COLOR_CODE.as
      • ColorManager.as

Code in the main.fla:

  //No code just include classses.MinObject.as in the .fla properties
  

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

Code in classes/display/colors/COLOR_CODE.as:

package classes.display.colors {
	
	public class COLOR_CODE {
		
		public static const RED = 0xff0000;
		public static const GREEN = 0x00ff00;
		public static const BLUE = 0x0000ff;
		public static const YELLOW = 0xffcc00;
		public static const MAGENTA = 0xff3399;
		public static const CYAN = 0x00ccff;
		public static const BLACK = 0x000000;
		public static const WHITE = 0xffffff;
		public static const GREY = 0x999999;
		
		/*
		min indexColor = 1
		max indexColor = 9
		*/
		public static const MIN:uint = 1;
		public static const MAX:uint = 9;
		
		public function COLOR_CODE():void{
			// constructor code
			return;
		}
		

	}
	
}

Code in classes/display/colors/ColorManager.as:

package classes.display.colors {
	
	import classes.display.colors.COLOR_CODE;
	import flash.utils.getDefinitionByName;
	import flash.utils.getQualifiedClassName;
	import flash.utils.getQualifiedSuperclassName;
	
	public class ColorManager extends COLOR_CODE{
		private static var _colorFromIndex:uint = 0x000000;
		private static var errorMessageFrom:Object; 
		private static const TAB:String = "	";
		public function ColorManager():void{
			super();
			// constructor code
			return;
		};
		private static function getColFrmIndexErr(value:uint):String{
			var errMsg:String = new String();
			var valToStr:String = value.toString()
			
			errorMessageFrom = getDefinitionByName(getQualifiedClassName(ColorManager));
			errMsg += "\n";
			errMsg += "-->	" + errorMessageFrom.toString() + ".";
			errMsg += ("getColorFromIndex(uintIndex:uint = " + valToStr + ");" ) + "\n";
			errMsg += TAB + "uintIndex [" + valToStr + "] out of range.\n";
			errMsg += TAB + "Index must be an integer between " + MIN + " and " + MAX;
			return errMsg
		};
		
		public static function getColorFromIndex(uintIndex:uint):uint{
			try{
				// uintIndex is not in range...
				// display an Error Message and convert COLOR in the catch block;
				if(uintIndex < MIN || uintIndex > MAX){
					var errorString = getColFrmIndexErr(uintIndex);
					var errorThrown:Error = new Error(errorString,90000001);
					throw errorThrown;
				}else{
					// uintIndex in range...
					// so continue and convert uintIndex to the related COLOR
					var color:uint = _colorFromIndex;
					switch(uintIndex){
							case 1:
							color = COLOR_CODE.RED;
							break;
							case 2:
							color = COLOR_CODE.GREEN;
							break;
							case 3:
							color = COLOR_CODE.BLUE;
							break;
							case 4:
							color = COLOR_CODE.YELLOW;
							break;
							case 5:
							color = COLOR_CODE.MAGENTA;
							break;
							case 6:
							color = COLOR_CODE.CYAN;
							break;
							case 7:
							color = COLOR_CODE.WHITE;
							break;
							case 8:
							color = COLOR_CODE.GREY;
							break;
							case 9:
							color = COLOR_CODE.BLACK;
							break;
							default:
							color = COLOR_CODE.GREY;
							break;
						}
					_colorFromIndex = color;
				};
			}catch(e:Error){
				// OUT OF RANGE ERROR  convert color index to COLOR_CODE.BLACK
				trace( e.getStackTrace());
				trace(TAB + TAB + " --{ ERROR CODE [" + e.errorID + "]" + " }--");
				trace(TAB + "Value has been converted to COLOR_CODE.BLACK (" + "0x000000" + ")" );
				trace(TAB + "<--------------\n\\Error:\n");
				return COLOR_CODE.BLACK;
			}
			return _colorFromIndex;
		};

	}
	
}
XHTML 1.0 STRICT - CSS2.1
<- retour