Comunidad de diseño web y desarrollo en internet online

Mascara para el efecto nieve

Citar            
MensajeEscrito el 25 Nov 2009 04:41 pm
Hola, lo primero de todo, decir que he buscado, pero no he encontrado solución a mi problema.

Estoy haciendo un christmas, típico, en el que tengo un primer plano en el que esta nevando, y al alejarse se ve que es una bola de nieve (de esas de los niños... lo típico), el caso es que solo tiene que nevar dentro de la bola, pero no lo consigo de ninguna manera.

A ver si algún maestro, me puede dar la clave!

Muchas gracias!

Por kune

16 de clabLevel



 

safari
Citar            
MensajeEscrito el 25 Nov 2009 04:52 pm
emmm... ¿Pero como estas "haciendo nevar"? ¿Por código? Si es así, cual es tu código.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 25 Nov 2009 05:03 pm
En el principal va este codigo:

Código ActionScript :

for (k=0; k<250; k++) {
   duplicateMovieClip(_root.snow, "snow"+k, k);
}

y en el "copo" va este otro codigo:

onClipEvent (load) {
   //specifies the size of the movie stage
   movieWidth = 620;
   movieHeight = 620;
   
   //variables that will modify the falling snow
   i = 1+Math.random()*2;
   k = -Math.PI+Math.random()*Math.PI;
   
   //giving each snowflake unique characteristics
   this._xscale = this._yscale=50+Math.random()*100;
   this._alpha = 75+Math.random()*100;
   this._x = -10+Math.random()*movieWidth;
   this._y = -10+Math.random()*movieHeight;
}
onClipEvent (enterFrame) {
   //putting it all together
   rad += (k/180)*Math.PI;
   this._x -= Math.cos(rad);
   this._y += i;
   if (this._y>=movieHeight) {
      this._y = -5;
   }
   if ((this._x>=movieWidth) || (this._x<=0)) {
      this._x = -10+Math.random()*movieWidth;
      this._y = -5;
   }
}

Por kune

16 de clabLevel



 

safari
Citar            
MensajeEscrito el 25 Nov 2009 08:16 pm
Pues si lo tienes así, sencillo, dale un setMask(). Algo como:

Código ActionScript :

mc = _root.attachMovieClip("mc_mask","MC_Mask_"+level,level);
_root["snow"+k].setMask(mc);


Cuidado que el código lo escribí rápido sobre el foro, no copies y pegues porque puede fallar, es solo ilustrativo a la idea de lo que tendrías que hacer.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 26 Nov 2009 08:39 am
ummmm, ayer ya lei sobre darle un seMask, pero no se muy bien donde tendria que ponerlo... en el copo? o en el principal?

muchas gracias por las respuestas Hernán!

Por kune

16 de clabLevel



 

safari
Citar            
MensajeEscrito el 26 Nov 2009 07:38 pm
Cuando armas el duplicarte:

Código ActionScript :

for (k=0; k<250; k++) { 
   mc = duplicateMovieClip(_root.snow, "snow"+k, k); 
   mc.setMask("mascara");
} 


Saludos, Hernán . -

PD. No recuerdo sino tendrías que duplicar también la mascara . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 29 Nov 2009 01:19 am

kune escribió:

Hola, lo primero de todo, decir que he buscado, pero no he encontrado solución a mi problema.

Estoy haciendo un christmas, típico, en el que tengo un primer plano en el que esta nevando, y al alejarse se ve que es una bola de nieve (de esas de los niños... lo típico), el caso es que solo tiene que nevar dentro de la bola, pero no lo consigo de ninguna manera.

A ver si algún maestro, me puede dar la clave!

Muchas gracias!


Hola kune..conseguistes crear elefecto que pretendias?'
por que yo tambien estoy interesado en ese tema..
solo soy capaz de meter un clip en la mascara con setMask.


agradezco toda la ayuda posible gracias

Por locks13

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Nov 2009 01:45 am
Cómo que sólo puedes poner un clip en el setMask???

Cuando duplicas "snow" 249 veces, metes todos los movieClips duplicados en una variable llamada mc, como hernán ya lo explico y escribió:

Código ActionScript :

for (k=0; k<250; k++) {  //estableces los limites de la duplicada
   mc = duplicateMovieClip(_root.snow, "snow"+k, k);  //duplicas 249 veces snow
   mc.setMask("mascara"); // a todos esos movieclips, les aplicas la máscara
} 


:)

Por violetisha

575 de clabLevel

1 tutorial
1 articulo

Genero:Femenino  

Mi silla en el estudio, México

opera
Citar            
MensajeEscrito el 29 Nov 2009 11:49 am
de esa forma lo he intentado y nada
si no subimos de nivel la mascara no mete a todos los duplicados

Código ActionScript :

for(i=0;i<10;i++){
   
   var maxlevel:Number =_root.getNextHighestDepth();
    var mascaras = duplicateMovieClip(_root.mascara,"mascara"+i,maxlevel);
    
   var estrellas = duplicateMovieClip("star","star"+i,i);
    estrellas.setMask(mascaras);
   
}

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 29 Nov 2009 12:07 pm
nada por mas que pruebo diferentes formas no consigo lo que quiero.

Aqui os pongo el codigo como vosotros me decis pero nada.no funciona la mascara..

gracias a todos..espero que alguien sepa decirme el por que no funciona..un saludo y gracias

Código ActionScript :

for(i=0;i<10;i++){
   
   var maxlevel:Number =_root.getNextHighestDepth();
      duplicateMovieClip(_root.mascara,"mascara"+i,maxlevel);
                           mascaras = _root["mascara"+i];

      duplicateMovieClip("star","star"+i,i);
                           estrellas = _root["star"+i];
    
                     estrellas.setMask(mascaras);
   
}

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 29 Nov 2009 08:29 pm
Apenas leo el code desde el iPhone pero a primera vista, primero crea el clip y en un lvl max alto pon la mascara


Saludos, Hernan . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

safari
Citar            
MensajeEscrito el 29 Nov 2009 09:09 pm
Eso intento pero nada..te pongo un ejemplo de lo que hago
pero amos...q asi funciona mucho peor...
en setMask si no pongo (mascara) cualquier otra cosa q ponga da error
se que hay q subirla un nivel por encima pero no doy con la forma..

gracias hernan

Código ActionScript :

for(i=0;i<10;i++){
   
   var maxlevel:Number =_root.getNextHighestDepth();
       duplicateMovieClip("star","star"+i,i);
   var mascaras = duplicateMovieClip(_root.mascara,"mascara"+i,maxlevel);
    

    _root["star"+i].setMask(mascaras);
   
}

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 30 Nov 2009 04:36 am
Para qué quieres duplicar las máscaras?? Se supone que le vamos a aplicar una máscara a muchos mc, o me equivoco??

Por violetisha

575 de clabLevel

1 tutorial
1 articulo

Genero:Femenino  

Mi silla en el estudio, México

opera
Citar            
MensajeEscrito el 30 Nov 2009 08:43 am
A mi tampoco me funciona... una pregunta la mascara que se duplica, es un MC que tengo en la libreria?

a ver si conseguimos solucionarlo,

gracias

Por kune

16 de clabLevel



 

safari
Citar            
MensajeEscrito el 30 Nov 2009 08:48 pm

violetisha escribió:

Para qué quieres duplicar las máscaras?? Se supone que le vamos a aplicar una máscara a muchos mc, o me equivoco??



Al hacer duplicateMOvieClip.. hay que poner una profundidad a los duplicados..
en este caso es la iteracion (i) entonces cada clip nuevo que crea lo va colocando
en un nivel mas alto...
Claro la mascara debe estar por encima de cada clip duplicado..
Segun pienso hay que contrapearlos de alguna manera..
un clip nivel(1),una mascara nivel(2),un clip nivel(3),una mascara nivel(4) y asi...
Algo que he comprobado...es que setMask..no acepta ningun nombre,instancia
variable etcc..que no este en el escritorio..

O bien hay que jugar con los Depth de alguna manera...
o hacer dos bucles..uno que coja los impares....
y el oto los pares....


Puede que no diga na mas que tonterias..pero ya no se lo que hacer..
y cualquier tonteria puede ser la solucion

un saludo a todoss...
y haber si lo sacamos de una vez xD

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 30 Nov 2009 08:56 pm
Como veo es un problema general, me tome unos minutitos para armarles un ejemplo práctico de como usar duplicate y setMask efectivamente:

Código ActionScript :

// Defino algunas variables simples
var init_lvl:Number = 30;
var init_position:Number = 100;
var espacio_entre_mc:Number = 15;
// Creo el movieClip que duplicaré y luego enmascararé (Para que sea más práctico creo el MC de 0, para que no tengan que andar creando nada, solo copiar y pegar el código AS para ver como funciona)
this.createEmptyMovieClip("target_mc",10);
target_mc.beginFill(0xFF0000);
target_mc.lineTo(0,50);
target_mc.lineTo(50,50);
target_mc.lineTo(50,0);
target_mc.lineTo(0,0);
//Creo la mascara que usaré, irregular para que se vea mejor el efecto 
this.createEmptyMovieClip("target_mask",20);
target_mask.beginFill(0x000);
target_mask.lineStyle(1,0xFF0000);
target_mask.lineTo(0,200);
target_mask.lineTo(200,150);
target_mask.lineTo(200,0);
// Posiciono en el centro de mi escenario la mascara
target_mask._x = Stage.width/2-target_mask._width/2;
target_mask._y = Stage.height/2-target_mask._height/2;
//Duplico en "diagonal" mis MovieClips
for (var i = 0; i<15; i++) {
   // Duplicados de los MC
   mc = target_mc.duplicateMovieClip("mc_duplicated_"+i, init_lvl+(i), {_x:init_position+(i*espacio_entre_mc), _y:init_position+(i*espacio_entre_mc)});
   // Duplicados de las Mascaras
   mask_mc = target_mask.duplicateMovieClip("mc_mask_duplicated_"+i, init_lvl*2+(i));
   // El SetMask en sí mismo
   mc.setMask(mask_mc);
}
// Dejo la mascara en un alpha bajo para ver el area de delimitación
target_mask._alpha = 10;
// Remuevo mi MovieClip de referencia
removeMovieClip(target_mc);


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 01 Dic 2009 08:36 pm

Hernán escribió:

Como veo es un problema general, me tome unos minutitos para armarles un ejemplo práctico de como usar duplicate y setMask efectivamente:

Código ActionScript :

// Defino algunas variables simples
var init_lvl:Number = 30;
var init_position:Number = 100;
var espacio_entre_mc:Number = 15;
// Creo el movieClip que duplicaré y luego enmascararé (Para que sea más práctico creo el MC de 0, para que no tengan que andar creando nada, solo copiar y pegar el código AS para ver como funciona)
this.createEmptyMovieClip("target_mc",10);
target_mc.beginFill(0xFF0000);
target_mc.lineTo(0,50);
target_mc.lineTo(50,50);
target_mc.lineTo(50,0);
target_mc.lineTo(0,0);
//Creo la mascara que usaré, irregular para que se vea mejor el efecto 
this.createEmptyMovieClip("target_mask",20);
target_mask.beginFill(0x000);
target_mask.lineStyle(1,0xFF0000);
target_mask.lineTo(0,200);
target_mask.lineTo(200,150);
target_mask.lineTo(200,0);
// Posiciono en el centro de mi escenario la mascara
target_mask._x = Stage.width/2-target_mask._width/2;
target_mask._y = Stage.height/2-target_mask._height/2;
//Duplico en "diagonal" mis MovieClips
for (var i = 0; i<15; i++) {
   // Duplicados de los MC
   mc = target_mc.duplicateMovieClip("mc_duplicated_"+i, init_lvl+(i), {_x:init_position+(i*espacio_entre_mc), _y:init_position+(i*espacio_entre_mc)});
   // Duplicados de las Mascaras
   mask_mc = target_mask.duplicateMovieClip("mc_mask_duplicated_"+i, init_lvl*2+(i));
   // El SetMask en sí mismo
   mc.setMask(mask_mc);
}
// Dejo la mascara en un alpha bajo para ver el area de delimitación
target_mask._alpha = 10;
// Remuevo mi MovieClip de referencia
removeMovieClip(target_mc);


Saludos, Hernán . -
Geniall Hernan..
lo he probado a mi manera y funciona...
tene alguna cosilla que otra...
como que hay un clip que no me lo enmascara
y la mascara hace el enmascarado pero tb se ve como si no lo hiciera
ya ire probando yo..
Ma gustado como has desarollado la idea
quien supiera lo q sabes jiji
gracias hermann
gracias a todos
un abrazo nos vemos por aki,...
Tema resuelto

Por locks13

25 de clabLevel



 

msie8

 

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