Foros del Web » Creando para Internet » Flash y Actionscript »

Ayuda para invertir "Mascara con círculos" en flash

Estas en el tema de Ayuda para invertir "Mascara con círculos" en flash en el foro de Flash y Actionscript en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 26/06/2008, 11:21
 
Fecha de Ingreso: noviembre-2006
Mensajes: 241
Antigüedad: 17 años, 5 meses
Puntos: 7
Ayuda para invertir "Mascara con círculos" en flash

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));
}
}
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.