Comunidad de diseño web y desarrollo en internet online

Mascara en círculos

Citar            
MensajeEscrito el 25 Ene 2006 01:54 am
Bueno, como verán, soy nuevo en este foro y les quiero dar mis saludos a todos.
Y ahora sí, vamos a lo que nos compete, paso a comentarles mi problema:
Yo no manejo muy bien el tema de actions scrips, pero algo de maña me doy. Me bajé un ej. de esta web, sobre una máscara en círculos ver link
Y el problema que tengo, es que copié y pegué las acciones en un documento nuevo y funcionó, pero como mi documento es mas grande (760x420) va muy lento, y me gustaría poder hacer el efecto mucho mas rápido. En el ej. de aquí, hay un selector manual del tamaño de los círculos, mientras mas grande, mas rápida es la animación. Yo no necesito poner el selector manual, pero si necesito que se vea mas rápido a 760x420 px.
Por favor si alguien me dice en qué parte del código tengo que meter mano para aumentar el tamaño de los círculos (lo cual a mi entender aumentaría la velocidad) se lo agradecería muchísimo.

Les dejo aquí el codigo:

MovieClip.prototype.drawCircle = function (radius, x, y) {
var angleDelta = Math.PI / 4;
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 < 8; 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));
}
}
}


Saludos.

Por elvarto

1 de clabLevel



Genero:Masculino  

opera
Citar            
MensajeEscrito el 25 Ene 2006 01:18 pm
notese el final del codigo:

Código :

c1.enmascarar(17); 
btnRepetir.onRelease = function(){ 
if(!isNaN(radiorr)){ 
if(radiorr>=1){ 
_root.c1.enmascarar(Number(radiorr)); 
} 
} 
}

en la primer linea es donde se ejecuta la animacion por primera vez, esta se ejecuta en 17, con cambiar el numero basta. Si se pretende repetir lo que sigue es la accion del boton repetir en donde toma el valor del campo de texto (radiorr) que basta con sustituirlo por un valor y sacar los if para ejecutar la animacion con un radio especifico.

Por gparis

112 de clabLevel



 

Uruguay

opera
Citar            
MensajeEscrito el 25 Ene 2006 03:51 pm
Muchísimas Grácias... no había visto esa parte, que idiota.
Funcionó. Te agradezco mucho.

Por elvarto

1 de clabLevel



Genero:Masculino  

opera
Citar            
MensajeEscrito el 26 Ene 2006 01:30 am
Bueno, funcionó.
Pero tengo otro problema ahora, y la verdad no se que pasa.

Esto que hice antes, quiero ponerlo como escena 2, ya que la 1er escena es la precarga y cuando termina de cargar salta a la escena 2 que es esta.
El problema es que al fin de la precarga le puse un go to and play scene 2. Entonces va hacia la escena 2 pero no muestra como era antes de que meta la precarga.
Todo eso código está ligado a un movie clip que se llama c1, y es un fondo blanco. La mascara la hace sobre el fondo del documento (Negro) y va mostrando de a poco el movieclip denominado c1 que es blanco. Ahora bien, al meter la precarga como escena 1 y pasar al terminar de cargar hacia la 2, me hace la mascara pero no sobre el movieclip blanco ya que me muestra todo rojo y no se por qué. Además de mostrarme en rojo, la animación de la precarga se sigue repitiendo aunke ya no este en la escena 1.

Por favor si alguien me puede ayudar se lo voy a agradecer mucho, y pordón por ser tan hincha bolas.

Saludos.

EDIT: Ya lo pude solucionar. Gracias.

Por elvarto

1 de clabLevel



Genero:Masculino  

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.