Navigation + Mask + Class

(download)

////////// MASK CLASS///////

 
package { 
	 
	import flash.display.*; 
	import gs.TweenLite; 
	import gs.easing.*; 
	import flash.filters.* 
	 
	public class ImageMask extends MovieClip{ 
		public var rad:Number; 
		private var _mskX:Number; 
		private var _mskY:Number; 
		private var _maskingShape:MovieClip; 
		private var _blur:BlurFilter = new BlurFilter; 
		 
 
		 public function ImageMask(mc:MovieClip, mskX:Number, mskY:Number, radius:Number) { 
			_maskingShape = new MovieClip() 
			addChild(_maskingShape); 
			rad = radius 
			_maskingShape.x = mskX 
			_maskingShape.y = mskY 
			drawInMask(); 
			mc.cacheAsBitmap=true; 
			_maskingShape.cacheAsBitmap=true; 
		 
			////////////////////////////////////////////////// 
			mc.mask = _maskingShape; 
			////////////////////////////////////////////////// 
		} 
		 
		private function drawInMask():void { 
				var colors:Array=[0xFF00FF,0x00FFFF]; 
				var alphas:Array=[1,0]; 
				var ratios:Array=[150,255]; 
				_maskingShape.graphics.lineStyle(); 
				_maskingShape.graphics.beginFill(0xFF00FF, 1) 
				_maskingShape.graphics.drawCircle(0, 0, rad); 
				 
			} 
		public function tweenMask (xBlur:Number, yBlur:Number, speed:Number):void { 
			TweenLite.from (_maskingShape, speed, {scaleX:0, scaleY:0, ease:Quad.easeOut}) 
			_blur.blurX = xBlur; 
			_blur.blurY = yBlur; 
			_maskingShape.filters = [_blur] 
		} 
	} 
			 
} 
 

///// IMAGES CLASS//////

 
 
package { 
 
	import flash.display.*; 
	import gs.TweenLite; 
	import gs.easing.*; 
 
	public class Images extends MovieClip { 
		public var vertSize:Number; 
		public var horSize:Number; 
 
		public function Images(posX:Number, posY:Number, frameNumber:Number) { 
			x=posX; 
			y=posY; 
			gotoAndStop(frameNumber); 
			vertSize=370; 
			horSize=370; 
		} 
	} 
} 
 

//MAIN FLA///////////

 
 
import gs.TweenLite; 
import gs.easing.*; 
 
var container:Sprite = new Sprite(); 
container.x=25; 
container.y=15; 
addChild(container); 
 
var imageMask: ImageMask; 
var imageWidth:Number; 
var maskPosX:Number; 
var maskPosY:Number; 
var images:MovieClip; 
 
var scaleUp:Number=2.5; 
var scaleDown:Number=1; 
 
buildNav(5, 5); 
 
function buildNav(navNumber:uint, gap:Number):void { 
	for (var i:uint = 0; i<navNumber; i++) { 		var nav:MovieClip = new Nav(); 		nav.y = i * (nav.height + gap); 		container.addChild(nav); 		nav.buttonMode=true; 		nav.txt.mouseEnabled=false; 		nav.txt.text = "navigation " + (i+1); 		nav.addEventListener(MouseEvent.ROLL_OVER, onOver); 		nav.addEventListener(MouseEvent.ROLL_OUT, onOut); 		nav.addEventListener(MouseEvent.CLICK, onClick); 		TweenLite.from(nav, .5, {x: - 150, ease:Back.easeOut, delay: i/10}); 		addEventListener(Event.ENTER_FRAME, posNav); 		nav.indexOrder = i+1 	} } function posNav(evt:Event):void { 	for (var i:uint = 1; i><container.numChildren; i++) { 		var currentNav:MovieClip=MovieClip(container.getChildAt(i)); 		var prevNav:MovieClip=MovieClip(container.getChildAt(i-1)); 		currentNav.y=prevNav.y+prevNav.height+5; 	} } function onClick(evt:MouseEvent):void { 	reset(0x003366, images); 	var nav:MovieClip = MovieClip(evt.currentTarget) 	images = new Images(350, 30, nav.indexOrder); 	imageMask = new ImageMask (images, images.x + images.horSize/2, images.y + images.vertSize/2, 170); 	imageMask.tweenMask (30, 30, 0.5) 	nav.txt.textColor=0xCC3300; 	addChild(images) 	addChild(imageMask) 	addChild(container) } function onOver(evt:MouseEvent):void { 	TweenLite.to(evt.currentTarget, 0.5, {scaleX: scaleUp, scaleY:scaleUp, x:0, 				 						ease: Quad.easeOut}); } function onOut(evt:MouseEvent):void { 	TweenLite.to(evt.currentTarget, 0.5, {scaleX: scaleDown, scaleY:scaleDown, x:0, 				 						ease: Quad.easeOut}); } function reset(col:Number, mc:MovieClip):void { 	if (mc) { 		removeChild(mc) 	} 	 	for (var i:uint = 0; i><container.numChildren; i++) { 		var nav:MovieClip=MovieClip(container.getChildAt(i)); 		nav.txt.textColor=col; 	} } 
>