Ciao a tutti, ho modificato la classe ScaleSquare di And80 in modo da utilizzare la classe TweenLite invece della nativa classe Tween. Ho anche aggiunto un parametro per impostare la durata delle Tween. Ve la posto in caso fosse gradita ^^

codice:
import mx.transitions.*;
import mx.transitions.easing.*;
import gs.TweenLite;

class ScaleSquare {
	private var __target:MovieClip;
	private var __width:Number;
	private var __height:Number;
	private var __xSections:Number;
	private var __ySections:Number;
	private var __sections:Number;
	private var __time:Number;
	private var __singleTime:Number;
	private var __random:Boolean;
	private var __easeType;
	private var __intv:Number;
	public var onMotionFinished:Function;
	function ScaleSquare(target:MovieClip, xSections:Number, ySections:Number, width:Number, height:Number, random:Boolean, easeType:Function, duration:Number, singleTime:Number) {
		var path = this;
		if (target != undefined) {
			__target = target;
			path['endOff'](__target);
			__width = width;
			__height = height;
			__xSections = xSections;
			__ySections = ySections;
			__sections = __xSections*__ySections;
			__random = random;
			__easeType = easeType;
			__time = (duration != undefined) ? (duration*1000)/__sections : 1000/__sections;
			__singleTime = (singleTime==undefined) ? 1: singleTime;
			drawMask(__target, __xSections, __ySections, __sections, __width, __height, __random, __easeType);
		}
	}
	private function drawSquare(target:MovieClip, name:String, level:Number, wdt:Number, hgt:Number, col:Number, x:Number, y:Number) {
		target.createEmptyMovieClip(name, level);
		with (target[name]) {
			lineStyle(0, col, 0);
			moveTo(0, 0);
			beginFill(col);
			lineTo(wdt, 0);
			lineTo(wdt, hgt);
			lineTo(0, hgt);
			lineTo(0, 0);
			endFill();
			_x = x;
			_y = y;
		}
	}
	private function drawMask(target:MovieClip, xSections:Number, ySections:Number, sections:Number, width:Number, height:Number, random:Boolean, easeType:Function) {
		target._parent.createEmptyMovieClip("masch"+target._name, target._parent.getNextHighestDepth());
		var sec_wdt:Number = Math.ceil(width/xSections);
		var sec_hgt:Number = Math.ceil(height/ySections);
		target._parent["masch"+target._name]._x = target._x+sec_wdt/2;
		target._parent["masch"+target._name]._y = target._y+sec_hgt/2;
		for (var i = 1; i<=sections; i++) {
			target._parent["masch"+target._name].createEmptyMovieClip("square"+i, i);
			var square:MovieClip = target._parent["masch"+target._name]["square"+i];
			square._xscale = square._yscale=0;
			drawSquare(square, "sq", 1, sec_wdt, sec_hgt, 0x00, -sec_wdt/2, -sec_hgt/2);
			if (i != 1) {
				var squareP:MovieClip = target._parent["masch"+target._name]["square"+Number(i-1)];
				if (squareP._x<width-sec_wdt) {
					square._x = squareP._x+sec_wdt;
					square._y = squareP._y;
				} else {
					square._x = 0;
					square._y = squareP._y+sec_hgt;
				}
			}
		}
		target.setMask(target._parent["masch"+target._name]);
		var path:Object = this;
		path['sec_arr'] = new Array();
		for (var r = 0; r<sections; r++) {
			path['sec_arr'][r] = r+1;
		}
		if (!random) {
			var index:Number = 1;
			path['__intv'] = setInterval(function () {
				path['animateMask'](target, random, path['sec_arr'], index, sections, target._parent["masch"+target._name]["square"+index], easeType);
				index++;
				if (index>sections) {
					clearInterval(path['__intv']);
				}
			}, __time);
		} else {
			path['__intv'] = setInterval(function () {
				var impr:Number = Math.floor(Math.random()*path['sec_arr'].length);
				var index = path['sec_arr'][impr]
				path['sec_arr'].splice(impr, 1);
				path['animateMask'](target, random, path['sec_arr'], index, sections, target._parent["masch"+target._name]["square"+index], easeType);
				if (path['sec_arr'].length<1) {
					clearInterval(path['__intv']);
				}
			}, __time);
		}
	}
	private function animateMask(target:MovieClip, random:Boolean, ver_arr:Array, index:Number, sections:Number, mc:MovieClip, easeType:Function) {
		var path = this;
		
		var oggTween:Object=new Object()
		oggTween._xscale=100
		oggTween._yscale=100
		oggTween.ease=easeType

		if (!random) {
			if (index == sections) {
				oggTween.onCompleteParams=[target, path]
				oggTween.onComplete=chiudi
			}
		} else {
			if (ver_arr.length < 1) {
				oggTween.onCompleteParams=[target, path]
				oggTween.onComplete=chiudi				
			}
		}
		TweenLite.to(mc, __singleTime, oggTween)		
	}
	private function chiudi(target, path){
		path['endOff'](target);
	}
	private function endOff(target:MovieClip) {
		target.setMask(null);
		for (var prop in target._parent["masch"+target._name]) {
			if (typeof (target._parent["masch"+target._name][prop]) == "movieclip") {
				target._parent["masch"+target._name][prop].removeMovieClip();
			}
		}
		target._parent["masch"+target._name].removeMovieClip();
		this['onMotionFinished']();
	}
}