Codice PHP:
import mx.transitions.Tween;
import mx.transitions.easing.*;
class ScaleCircle {
private var __target:MovieClip;
private var __width:Number;
private var __height:Number;
private var __sections:Number;
private var __vsect:Number;
private var __grid:Number;
private var __time:Number;
private var __random:Boolean;
private var __easeType;
private var __intv:Number;
function ScaleCircle(target:MovieClip, sections:Number, width:Number, height:Number, random:Boolean, easeType:Function) {
var path = this;
if (target != undefined) {
__target = target;
path['endOff'](__target);
__width = width;
__height = height;
__sections = sections;
__vsect = Math.ceil((__sections*__height)/__width);
__grid = __sections*__vsect;
__random = random;
__easeType = easeType;
__time = Math.round(1000/__sections);
drawMask(__target, __sections, __vsect, __grid, __width, __height, __random, __easeType);
}
}
private function drawCircle(target:MovieClip, name:String, level:Number, r:Number, color:Number, x:Number, y:Number):Void {
target.createEmptyMovieClip(name, level);
with (target[name]) {
lineStyle(0, 0x000000);
moveTo(x+r, y);
beginFill(color);
curveTo(r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
curveTo(Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
curveTo(-Math.tan(Math.PI/8)*r+x, r+y, -Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
curveTo(-r+x, Math.tan(Math.PI/8)*r+y, -r+x, y);
curveTo(-r+x, -Math.tan(Math.PI/8)*r+y, -Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
curveTo(-Math.tan(Math.PI/8)*r+x, -r+y, x, -r+y);
curveTo(Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
curveTo(r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
endFill();
_x = x;
_y = y;
}
}
private function drawMask(target:MovieClip, sections:Number, vsect:Number, grid:Number, width:Number, height:Number, random:Boolean, easeType:Function) {
target._parent.createEmptyMovieClip("masch"+target._name, target._parent.getNextHighestDepth());
var diameter:Number = Math.ceil(width/sections);
target._parent["masch"+target._name]._x = target._x+(diameter/2);
target._parent["masch"+target._name]._y = target._y+(diameter/2);
for (var i = 1; i<=grid; i++) {
target._parent["masch"+target._name].createEmptyMovieClip("circle"+i, i);
var circle:MovieClip = target._parent["masch"+target._name]["circle"+i];
circle._xscale = circle._yscale=0;
drawCircle(circle, "ci", 1, diameter/2, 0x00, 0, 0);
if (i != 1) {
var circleP:MovieClip = target._parent["masch"+target._name]["circle"+Number(i-1)];
if (circleP._x<width-diameter) {
circle._x = circleP._x+diameter;
circle._y = circleP._y;
} else {
circle._x = 0;
circle._y = circleP._y+diameter;
}
}
}
target.setMask(target._parent["masch"+target._name]);
var path:Object = this;
if (!random) {
var index:Number = 1;
path['__intv'] = setInterval(function () {
path['animateMask'](target, random, path['sec_arr'], index, grid, target._parent["masch"+target._name]["circle"+index], easeType);
index++;
if (index>grid) {
clearInterval(path['__intv']);
}
}, __time);
} else {
path['sec_arr'] = new Array();
for (var r = 0; r<grid; r++) {
path['sec_arr'][r] = r+1;
}
path['__intv'] = setInterval(function () {
var impr:Number = Math.random()*path['sec_arr'].length;
var index = path['sec_arr'].splice(impr, 1);
if (path['sec_arr'].length == 1) {
var inda = index;
}
path['animateMask'](target, random, path['sec_arr'], inda, grid, target._parent["masch"+target._name]["circle"+index], easeType);
if (path['sec_arr'].length<1) {
clearInterval(path['__intv']);
delete path['sec_arr'];
}
}, __time);
}
}
private function animateMask(target:MovieClip, random:Boolean, ver_arr:Array, index:Number, grid:Number, mc:MovieClip, easeType:Function) {
var path = this;
var tween = new Tween(mc, "_xscale", easeType, 0, 150, 30, false);
var tween = new Tween(mc, "_yscale", easeType, 0, 150, 30, false);
var tw:Object = new Object();
tw.onMotionFinished = function() {
if (!random) {
if (index == grid) {
path['endOff'](target);
}
} else {
if (mc._name == target._parent["masch"+target._name]["circle"+index]._name) {
path['endOff'](target);
}
}
};
tween.addListener(tw);
}
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();
}
public function isFinished(target:MovieClip):Boolean {
if (target._parent["masch"+target._name] == undefined) {
return true;
}
return false;
}
}
Il codice è bacatissimo