Comunidad de diseño web y desarrollo en internet online

como duplico un MovieClip, varias veces?

Citar            
MensajeEscrito el 29 Ago 2007 11:21 am
hola!!

he hecho un movieclip llamado "bolas" con un movimiento especifico. el codigo es este:

Código :


   this.bolas.onEnterFrame = function() {
      velocidad = random(6)+1;
      direccion = random(8)+1;
      movimiento = random(6)+1;
      this._y = this._y-velocidad;
      this._alpha = this._y-5;
      if (direccion == 1) {
         this._x = this._x-movimiento;
      }
      if (direccion == 4) {
         this._x = this._x+movimiento;
      }
      if (this._y<5) {
         this.removeMovieClip();
      }
   };


   


ahora lo que quiero es que ese movieClip se duplique 10 veces por ejemplo sin tener que hacer 10 veces el movieClip.

Lo intente con duplicateMovieClip , pero no komprendo muy bien.

Espero vuestra ayuda impacientemente.

Un saludo y gracias.

Por falakata

23 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 29 Ago 2007 03:32 pm

falakata escribió:

Lo intente con duplicateMovieClip , pero no komprendo muy bien.

la sintaxis es asi:

Código :

duplicateMovieClip(name:String, depth:Number, [initObject:Object])

donde:
name:String - Identificador exclusivo del clip de película duplicado.

depth:Number - Entero exclusivo que especifica la profundidad a la que debe colocarse el nuevo clip de película. Utilice la profundidad -16384 para colocar la nueva instancia de clip de película debajo del contenido creado en el entorno de edición de Flash. Los valores comprendidos entre -16384 y -1, ambos inclusive, están reservados para utilizarse en el entorno de edición y no deben emplearse con este método. Los demás valores de profundidad válidos oscilan entre 0 y 1048575, ambos inclusive.

initObject:Object [opcional] - (Admitido en Flash Player 6 y posteriores.) Objeto que contiene propiedades con las que rellenar el clip de película duplicado. Este parámetro permite a los clips de película creados dinámicamente recibir parámetros de clip. Si initObject no es un objeto, se omite. Todas las propiedades de initObject se copian en la nueva instancia. Las propiedades especificadas con initObject están disponibles para la función constructora.
----------------------------------------------------------------------------------------------------------------------------------

ahora para usarlo repetidas veces usas un for, algo asi:

Código :

var clipsCant:Number = 10;
for(i=0; i >= clipsCant; i++){
   this.duplicateMovieClip("bolas" + i, i);
}

Por penHolder

Claber

4661 de clabLevel

39 tutoriales
2 articulos

Genero:Masculino   Premio_Secretos

| mdz |

firefox
Citar            
MensajeEscrito el 01 Sep 2007 11:35 am
hola!!

probe con el FOR pero al cargar la pelicula me salia un mensaje de windows que dice:

debido a un problema si desea reproducir la pelicula , es posible que el ordenador no responda.¿¿desea anular el script??

si le doy que no el pc se me queda inoperativo, y si le doy que si no funciona el script.

yo creo que es un problema de versiones de flash, porque el codigo que hace que se mueva la bola es cogido de un tutorial de aki de cristalab, el de las burbujas.ya que si me descargo el tutorial y lo abro kon flash 8 me reproduce perfectamente , pero si abro un nuevo proyecto y copio el codigo ya no funciona.

No se si estare en lo cierto , de lo contrario avisenme XD

Cual es tu opinion Duke Uthyr Ian Hölder??

Un saludo y Gracias por tu atencion.

Por falakata

23 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 01 Sep 2007 12:24 pm
Lo que ocurre es que posibleemente al copiarlo te estés dejando el código que hace el duplicateMovieClip.
Hay un pequeño error en el for y lo que te está pasando es que está reproduciéndose más de 256 veces (de hecho está haciendo reproducción infinita), simplemente cambia

Código :

[...]
for(i=0; i >= clipsCant; i++){
[...]

por

Código :

[...]
for(i=0; i < clipsCant; i++){
[...]


Pruébalo y nos cuentas.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 03 Sep 2007 10:26 am
hola!!

es una cosa muy extraña , ya que si escribo la variable de esta forma:

Código :


var clipCant:number = 10 



me da problemas el script , pero si lo pongo a la antigua usanza:

Código :

 clipsCant = 10



no me da error el script pero tampoco me duplica el clip , no se si es que a los clips duplicados estan en la misma posicion del clip original y he de moverlos para que se vean .

Sera por eso?'?

Un saludo y gracias por tu tiempo.

Por falakata

23 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 03 Sep 2007 01:30 pm

falakata escribió:

... no se si es que a los clips duplicados estan en la misma posicion del clip original y he de moverlos para que se vean .

Sera por eso?'?

Si, los clips duplicados duplican también la posición x y del clip original. Cambiaselas despues de duplicarlos.
PD: duplicalo así --> clip.duplicateMovieClip("clip" + i, this.getNextHighestDepth());

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 03 Sep 2007 06:50 pm

falakata escribió:

hola!!

es una cosa muy extraña , ya que si escribo la variable de esta forma:

Código :


var clipCant:number = 10 


[...]


Las clases (incluídos los tipos de datos) siempre comienzan con Mayúscula:

Código :


var clipCant:Number = 10 

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 04 Sep 2007 10:48 am
hola!!

Esto va cogiendo formaaa! wiiii !!! :lol:

Ya he conseguido que se dupliquen los clips y ademas que cada duplicado tenga el movimiento del clip bola original, este es el codigo :

Código :


   bolas.onEnterFrame = function() {
      velocidad = random(6)+1;
      direccion = random(8)+1;
      movimiento = random(6)+1;
      this._y = this._y-velocidad;
      this._alpha = this._y-5;
      if (direccion == 1) {
         this._x = this._x-movimiento;
      }
      if (direccion == 4) {
         this._x = this._x+movimiento;
      }
      if (this._y<5) {
         this.removeMovieClip();
      }
   };


var clipsCant:Number = 10;
for(i=0; i < clipsCant; i++){
bolas.duplicateMovieClip("bolas" + i, this.getNextHighestDepth());
      this["bolas"+i].onEnterFrame= function(){
      velocidad = random(6)+1;
      direccion = random(8)+1;
      movimiento = random(6)+1;
      this._y = this._y-velocidad;
      this._alpha = this._y-5;
      if (direccion == 1) {
         this._x = this._x-movimiento;
      }
      if (direccion == 4) {
         this._x = this._x+movimiento;
      }
      if (this._y<5) {
         this.removeMovieClip();
      }

}


El problema es que me gustaria que los clips duplicados salieran a lo largo del escenario en la posicion de x, no en la misma posicion del primer clip(no se si me explique bien), e intentado moverlos poniendo este codigo :



Código :


bolas.duplicateMovieClip("bolas" + i, this.getNextHighestDepth());
      this["bolas"+i]._x= 100



Pero solo me mueve un clip el resto salen dnd el clip original.

Bueno seguire toqueteando a ver si consigo algo.

Un saludo Y de nuevo MUCHAS GRACIAS! por vuestro tiempo, es de gran ayuda.

Por falakata

23 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 04 Sep 2007 11:29 am

falakata escribió:

Pero solo me mueve un clip el resto salen dnd el clip original.

No, el problema es que estas colocanto todos los duplicados en la X = 100
añadele un incremento a cada duplicado

Código :

var clipsCant:Number = 10;
var xIni:Number = bolas._x;
for (i = 1; i <= clipsCant; i++)
{
   bolas.duplicateMovieClip("bolas" + i, this.getNextHighestDepth());
   this["bolas" + i]._x = xIni + 20 * i;
}

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 05 Sep 2007 06:00 pm
hola!!!

Muchisimas gracias, ya toy consiguiendo lo que queria XD. Que feliz Soy!!!weeeee

Solo me falta una cosa, y es que cuando desaparezcan por la parte de arriba del escenario , vuelva a empezar todo el proceso.

Vuelvo a poner el codigo entero:

Código :


var clipsCant:Number = 20;
var xIni:Number = logo._x
var yIni:Number = logo._y

for(i=0; i < clipsCant; i++){
   logo.duplicateMovieClip("logo" + i, this.getNextHighestDepth(),i)
   this["logo"+i]._x=xIni+5*Math.pow(i+2,2)
   this["logo"+i]._y=yIni+60*random(5)*2
   this["logo"+i].onEnterFrame= function(){
           velocidad = random(2)+1;
      direccion = random(8)+1;
      movimiento = random(6)+1;
      this._y = this._y-velocidad;
      this._alpha = this._y-5;
      if (direccion == 1) {
         this._x = this._x-movimiento
         this._y = this._y-movimiento;
      }
      if (direccion == 4) {
         this._x = this._x+movimiento
         this._y = this._y-movimiento;
      }
      if (this._y<5) {
         this.removeMovieClip()
      }
   }
}


Intente cambiar el codigo dnd el codicional que hace el removeMovieClip, en vez de eso puse lo siguiente

Código :

.....
if (this._alpha==0) {
    this._y=500
    this._alpha=100
}


Para que cuando el alpha este a 0 el movieClip empezara otra vez en el 500 (posicion y) y con el alpha a 100 otra vez.
pero...nada el clip desaparece y no vuelve :cry:

Estoy muy pez en esto del AS2...

Como siempre , Mucha Gracias por vuestro tiempo en ayudarme, lo agradezco muchisimo.

Un saludo!!

Por falakata

23 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Sep 2007 07:31 pm
Cambia el this._alpha==0 por this._alpha<=0

Por Zguillez

BOFH

10744 de clabLevel

85 tutoriales
17 articulos
3 ejemplos

Genero:Masculino   Bastard Operators From Hell Héroes Team Cristalab Editores

BCN

firefox
Citar            
MensajeEscrito el 06 Sep 2007 11:31 am
hola!!

Joder como es posible que por un simbolo no me hiciera el bucle , (maldito as2).Puedes explicarme por que con el == no funciona y con el <= sale perfecto?

Muchas gracias, como siempre.

un saludo

Por falakata

23 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Sep 2007 11:55 am
Es posible porque el _alpha no sólo acepta valores positivos sino también negativos y tu alpha no está en "0" sino en un valor negativo; es por eso que "_alpha == 0" es falso. Colocando "menor o igual que (<=)" te aseguras que el código funciona si el valor es 0 o menos.
P.D.: No es culpa de AS2... :roll:

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 06 Sep 2007 01:14 pm
JEJEJEJJEE ya se que no es culpa del AS2 , la culpa es solo mia jeje , pero me desahogo hechando la culpa a otro jejeje. :cool:

Soy mas o menos nuevo en esto de los foros , y me estoy quedando alucinado con la rapidez que me has contestado, y ad+ dandome las soluciones.

Estoy muy contento :lol:

Gracias por tu amabilidad y tiempo , espero algun dia poder dar yo las soluciones.

:wink:

Un saludo y espero poder encontrarme otra vez contigo.

Hasta pronto!!

Por falakata

23 de clabLevel



Genero:Masculino  

firefox

 

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