Comunidad de diseño web y desarrollo en internet online

Generar Copias de MC cada cierto tiempo

Citar            
MensajeEscrito el 19 Oct 2006 12:48 pm
Hola a todos!

Lo que quiero hacer creo que es muy simple:
Estoy haciendo una animación de unas burbujas que recorren un tubo
He creado un MC con la animación de la burbuja haciendo el recorrido, y lo que pretendo es que lo recorran muchas burbujas generadas al azar.
Me he fijado en el código de un tutorial que había para generar nubes que iban rotando y eso.
Pero el problema es que me crea las copias, pero todas en el mismo momento, y recorren el tubo todas pegadas. Lo que quiero es que cada cierto tiempo vaya haciendo copias, o en cada fotograma me haga una nueva.

Este es el código que he utilizado:

Código :

//generar copias de la instancia
for (i=1; i<50; i++) {
   duplicateMovieClip("burbu1", "burbu1"+i, i);
}


Eso en el fotograma donde está la instancia burbu1

...y en el propio MC de la burbuja tengo esto:

Código :

onClipEvent (load) {
   _x=(random(8)+495);
   _y=(random(8)+2);
}


Si alguien puede decirme cómo hacerlo se lo agradezco.

Por KidLoko

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Oct 2006 01:15 pm

Código :

//Averiguamos cuánto mide el escenario
var sw:Number = Stage.width;
var sh:Number = Stage.height;
//Variable para contar las burbujas
var i:Number = 0;
function creaBurbuja() {
   //Creamos un nuevo mc a partir de burbuja
   pompa = burbuja.duplicateMovieClip("burbuja"+i, getNextHighestDepth());
   //Le damos coordenadas aleatorias
   pompa._x = Math.random()*sw;
   pompa._y = Math.random()*sh;
   i++;
}
//Hacemos que la función creaBurbuja se ejecute cada 1000 milisegundos (cada segundo)
intervalo = setInterval(creaBurbuja, 1000);

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 19 Oct 2006 03:07 pm
Muchas Gracias! :)
Ahora mismo voy a probarlo. Si tengo más dudas vuelvo aki

Nos vemos

Por KidLoko

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Oct 2006 03:53 pm
Ya lo he probado
Funciona perfectamente, pero hay un problema, que se van generando sin parar burbujas y no se como borrarlas cuando acaben el recorrido. Se quedan ahi quietas pero se ralentiza la animación cada vez más.

y gracias otra vez por la ayudita ^^

Por KidLoko

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Oct 2006 04:02 pm
Busca en la ayuda de flash sobre clearInterval. Cuando te hayas cansado de las burbujas, clearInterval(intervalo):

Código :

function creaBurbuja() {
   //Creamos un nuevo mc a partir de burbuja
   pompa = burbuja.duplicateMovieClip("burbuja"+i, getNextHighestDepth());
   //Le damos coordenadas aleatorias
   pompa._x = Math.random()*sw;
   pompa._y = Math.random()*sh;
   i++;
  if(i>=20){
  clearInterval(intervalo);
}
}

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 19 Oct 2006 05:25 pm
Lo he probado pero no cambia nada, se sigue ralentizando. Además he probado a ponerle if(i>=5) y siguen saliendo burbujas como de una bañera...
No hay alguna manera con removeMovieCLip? o algo que simplemente borre cada copia al llega al final del trayecto?

Gracias

Por KidLoko

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Oct 2006 05:32 pm
:?
Con este código hay exactamente 6 burbujas en el escenario:

Código :

//Averiguamos cuánto mide el escenario
var sw:Number = Stage.width;
var sh:Number = Stage.height;
//Variable para contar las burbujas
var i:Number = 0;
function creaBurbuja() {
   //Creamos un nuevo mc a partir de burbuja
   pompa = burbuja.duplicateMovieClip("burbuja"+i, getNextHighestDepth());
   //Le damos coordenadas aleatorias
   pompa._x = Math.random()*sw;
   pompa._y = Math.random()*sh;
   i++;
   if (i>=5) {
      clearInterval(intervalo);
   }
}
//Hacemos que la función creaBurbuja se ejecute cada 1000 milisegundos (cada segundo)
intervalo = setInterval(creaBurbuja, 500);

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 20 Oct 2006 01:51 pm
Será porque soy fanático de los prototipos (si, estoy bien loco), pero cuando yo necesito algo parecido uso este código:

Código :

MovieClip.prototype.miClip_mc = function () {
this.onEnterFrame = function () {
if (this._x > Stage.width || this._x < 0 || this._y > Stage.height || this._y < 0) {
this.removeMovieClip ();
};
}

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 20 Oct 2006 01:55 pm
Zah, además, en tu código no se eliminan las burbujas.

Si no querés crear nuevas burbujas inutilmente, podés reemplazar

this.removeMovieClip ();

por:

this._x = posicionDeInicioX
this._y = posicionDeInicioY

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 20 Oct 2006 03:38 pm
Yo creo que no entiendo lo que dices, Hernan. Ese código que hace exactamente?
He seguido lo que me indicaba Zah aunque cambiando un poco lo de la posición, ya que salen todas del mismo punto.
Después lo de borrar las burbujas no funcionaba.
Os pongo el código aqui:

Código :

//Variable para contar las burbujas
var i:Number = 0;
function creaBurbuja() {
   //Creamos un nuevo mc a partir de burbuja
   pompa = burbu1.duplicateMovieClip("burbu1"+i, getNextHighestDepth());
   //Le damos coordenadas aleatorias
   pompa._x=(random(8)+490);
   pompa._y=(random(8)-4);
   i++;
}
//Hacemos que la función creaBurbuja se ejecute cada 1000 milisegundos (cada segundo)
intervalo = setInterval(creaBurbuja, 350);
if(i>=5){
  clearInterval(intervalo);
}


//Ahora la burbuja del 2º tubo
//Variable para contar las burbujas
var n:Number = 0;
function creaBurbuja2() {
   //Creamos un nuevo mc a partir de burbuja
   pompa2 = burbu2.duplicateMovieClip("burbu2"+i, getNextHighestDepth());
   //Le damos coordenadas aleatorias
   pompa2._x=(random(8)+15);
   pompa2._y=(random(8)+30);
   n++;
}
//Hacemos que la función creaBurbuja se ejecute cada 1000 milisegundos (cada segundo)
intervalo2 = setInterval(creaBurbuja2, 300);
if(n>=5){
  clearInterval(intervalo2);
}
stop();

Por KidLoko

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 Oct 2006 06:52 pm
No hay maneraa!!! :twisted:
Ya lo he intentado todo y no soy capaz de borrar las burbujas que acaban.
Hay alguna manera de que al crear la función creaBurbuja limitemos el tiempo que va a vivir cada copia del MC?
La animación de cada burbuja dura 100 fotogramas, he intentado que al llegar al final, cada una se borre a si misma pero nada.
Os dejo la animación para que veais el caso.

http://www.prueba.creattiva.es/pruebatubos.html

Si quereis ver la fuente la podeis descargar:

http://www.prueba.creattiva.es/pruebatubos.rar

Muchas Gracias a todos

Por KidLoko

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 20 Oct 2006 10:11 pm
Lo que hice no fue limitar la vida de las burbujas por tiempo, sino por posición.

Probá con esto y fijate el resultado:

Código :

//
var posInicial:Number = 30;
var ancho:Number = 20;
var contador:Number = 0;
//
MovieClip.prototype.comportamientoBurbuja = function () {
this.onEnterFrame = function () {
this._y -= 3;
this._x += 3 * (Math.sin(this._y) - .5)
if (this._x > Stage.width || this._x < 0 || this._y > Stage.height || this._y < 0) {
this.removeMovieClip ();
_root.contador--;
};
}
//
for (i = 1; i <= 5; i++) {
_root.attachMovie ("burbuja", "burbuja" + i, i);
//
_root["burbuja" + i)._y = Stage.height + 10;
_root["burbuja" + i)._x = Number (random (ancho) + posInicial);
_root["burbuja" + i).comportamientoBurbuja;
contador++
}


Para usar este código, pegalo en el root y armá un MC exportado como "burbuja".

Las burbujas aparecerán en la parte inferior de la pantalla e irán subiendo. La posición inicial sobre el eje X será aleatoria y aparecerán en un area de un ancho determinado (la variable "ancho") y que se encontrará en una posición determinada (la variable posInicial).

La variable "contador" nos dará la cantidad de burbujas en la pantalla.



Ahora, me disculpo de antemano si hay un error en el código ya que lo escribí directamente acá, ya que no tengo Flash instalado en esta computadora. :P

El efecto de movimiento ondulante de las burbujas viene de regalo :wink:

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 20 Oct 2006 10:15 pm
Ooooops, cometí un error.

Me doy cuenta ahora que lo reviso. Donde dice:

if (this._x > Stage.width || this._x < 0 || this._y > Stage.height || this._y < 0) {

Debería decir:

if (this._y < 0) {



Lamento el error.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 23 Oct 2006 06:49 am

Por KidLoko

16 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 27 Oct 2008 06:46 pm
Esto es lo mismo, solo pasa al siguiente frame cuando el i = 100

Código :

//Averiguamos cuánto mide el escenario
var sw:Number = Stage.width;
var sh:Number = Stage.height;
//Variable para contar las burbujas
var i:Number = 0;
function creaBurbuja() {
   //Creamos un nuevo mc a partir de burbuja
   pompa = burbuja.duplicateMovieClip("burbuja"+i, getNextHighestDepth());
   //Le damos coordenadas aleatorias
   pompa._x = Math.random()*sw;
   pompa._y = Math.random()*sh;
   i++;
   if (i>=100) {
      clearInterval(intervalo);
nextFrame();
   }
}
//Hacemos que la función creaBurbuja se ejecute cada 1000 milisegundos (cada segundo)
intervalo = setInterval(creaBurbuja, 500);


Y esto en el siguiente frame:

Código :

for (i=0; i<100; i++) {
   removeMovieClip("burbuja"+i);
}

Ya!

Por djordonezc

3 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 27 Oct 2008 10:01 pm
@djordonezc, notaste que el hilo tiene dos años?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 27 Oct 2008 10:18 pm
sip

Por djordonezc

3 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 28 Jul 2009 12:32 am
jajajajajajajajaj

Por 22

79 de clabLevel



 

Uruguay

msie7

 

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