Buenas, vereis he encontrado un ejemplo de como hacer una máscara de círculos en AS, pero la idea es invertir el movimiento de esta máscara.
Pongo a continuación el code por si alguien esta tremendamente aburrid@ y puede echarme un cable.
Un saludo y gracias de antemano!!.
CODE AS
==============
MovieClip.prototype.drawCircle = function (radius, x, y) {
var angleDelta = Math.PI / 2;
var ctrlDist = radius/Math.cos(angleDelta/2);
var angle = 0;
var rx, ry, ax, ay;
this.moveTo(x + radius, y);
for (var i = 0; i < 20; i++) {
angle += angleDelta;
rx = x + Math.cos(angle-(angleDelta/2))*(ctrlDist);
ry = y + Math.sin(angle-(angleDelta/2))*(ctrlDist);
ax = x + Math.cos(angle)*radius;
ay = y + Math.sin(angle)*radius;
this.curveTo(rx, ry, ax, ay);
}
}
MovieClip.prototype.enmascarar = function(radio){
this._alpha = 0;
var prof:Number = _root.getNextHighestDepth(); // Profundidad de los clips a usar
var ancho:Number = this._width; // Ancho del clip a enmascarar
var alto:Number = this._height; // Alto del clip a enmascarar
var cx:Number = Math.floor(ancho/(radio*2))+2; // Número de círculos por fila
var cy:Number = Math.floor(alto/radio)+1; // Número de círculos por columna
var cant:Number = cx * cy+cx; // Cantidad total de círculos
var destino:MovieClip = this; // Identificador del clip
_root.createEmptyMovieClip("maskareitor",prof); // Creamos el clip de la máscara
prof++; // Profundidad más
var x:Number = 0 // Columna q le toca a cada círculo
var y:Number=1 // Fila que le toca a cada círculo
var d:MovieClip; // Identificador del círculo
var control:Number = 0;
diagonal = 0, posDiag = 1;
for(i=1;i<(cant+1);i++){ // Bucle de creación de los círculos
_root.maskareitor.createEmptyMovieClip("circulo" + i,prof); // Creamos el clip vacío
d = _root.maskareitor["circulo" + i]; // Identificador del círculo actual
d._x = x; // Calculamos la posición X
d._y = radio*(y-1); // Calculamos la posición Y
d.i = i; // Asignamos el número
// Fórmulas para controlar el orden de aparición
d.orden = diagonal+posDiag;
posDiag++;
if(posDiag%(cx) == 0){
posDiag = 1;
diagonal +=0.5;
}
// d.orden = random(cant); <-- para hacerlos aleatorios
//--------------------------------------------------------
// POSICIONAMIENTO----------------------------------------
if(y%2!=0){
x+=(radio*2);
if(i%(cx)==0 && i!=0){
x=-radio;
y++;
}
}else{
x+=(radio*2);
if(i%(cx)==0){
x = 0;
y++;
}
}
//---------------------------------------------------------
//---------------------------------------------------------
d.beginFill(0xFF0000,100); // Dibujamos el círculo
d.drawCircle(radio,0,0);
d.endFill();
prof++;
d._xscale = 0; // Lo escalamos a 0
d._yscale = 0;
d.tiempo = 0; // Temporizador
d.onEnterFrame = function(){
if(this.tiempo == this.orden){ // Si le toca agrandarse
if(this._xscale <100){
this._xscale += (101-this._xscale)/7;
this._yscale = this._xscale;
}else{
delete this.onEnterFrame;
control +=100;
if(control == (cant*100)){
_root.maskareitor.removeMovieClip(); // Borra la máscara madre
destino.setMask(null); // Quita máscara
//trace("fin");
}
}
}else{
this.tiempo +=0.5;
}
}
}
this.setMask(_root.maskareitor);
this._alpha = 100;
}
c1.enmascarar(17);
btnRepetir.onRelease = function(){
if(!isNaN(radiorr)){
if(radiorr>=1){
_root.c1.enmascarar(Number(radiorr));
}
}
}