Comunidad de diseño web y desarrollo en internet online

problema con array 2

Citar            
MensajeEscrito el 30 Jul 2009 12:07 am
hola o_o, como siempre pidiendo explicaciones, me podrian decir que signifiacan unas lineas de este codigo, ya lo he usado en 3 cosas pero no entiendo, simplemenete me lo memorize =/

Código :

var array:Array = new Array();
cont = 0;
onMouseMove = function () {
   cont++;
   var crear:MovieClip = _root.cosa.duplicateMovieClip("cosita"+cont, cont);
   cosota = _root["cosita"+cont];
   cosota._x = _xmouse;
   cosota._y = _ymouse;
   array.push(crear);
   crear._alpha = 50;
};
onEnterFrame = function () {//a partir de aqui no entiendo nada de array [i]array[0]
   for (i=0; i<array.length; i++) {
      array[i]._alpha -= 5;
      if (array[i]._alpha<=10) {
         array[0].removeMovieClip();
         array.splice(0, 1);
      }
   }
};

gracias U_U

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 30 Jul 2009 07:56 pm
Este código parece que se sirve para hacer un efecto de seguimiento del puntero del ratón, dejando una estela de movieclips detrás de él

Código ActionScript :

var array:Array = new Array(); //Creamos un array que contendrá los movieclips
cont = 0; //contador que se usará para los nombres y las profundidades de los movieclips creados
onMouseMove = function () { //evento que se ejecutará cada vez que movamos el ratón
   cont++; //incrementamos el contador (nota curiosa: hecho así, en el caso poco probable de que el puntero efectuase más de 1.79e+308 movimientos, obtendríamos un error :))
   var crear:MovieClip = _root.cosa.duplicateMovieClip("cosita"+cont, cont); //se crea un duplicado de un clip que tenemos en el escenario llamado "cosa", le llamamos "cosita"+cont, y le ponemos en la profundidad cont
   cosota = _root["cosita"+cont]; //Esta parte realmente sobra. Ya tenemos una variable MovieClip llamada "crear", así que no tiene mucho sentido que creemos esta otra que es igual
   cosota._x = _xmouse; //Esta línea y la siguiente colocan en clip en las coordenadas del ratón (aunque si omitimos la línea anterior, bastaría con poner crear._x = _xmouse;)
   cosota._y = _ymouse; //(Debería ser crear._y = _ymouse;)
   array.push(crear); //metemos el clip en nuestro array
   crear._alpha = 50; //Le damos un alpha de 50
};
onEnterFrame = function () {//evento que se ejecutará cada frame
   for (i=0; i<array.length; i++) {//Para cada elemento del array...
      array[i]._alpha -= 5; //decrementamos el alpha de cada clip en 5
      if (array[i]._alpha<=10) {//en caso de que el alpha del clip sea menor o igual que 10
         array[0].removeMovieClip();//eliminamos el clip del escenario
         array.splice(0, 1);//eliminamos el primer elemento del array (es decir, aquel cuyo alfa sea menor o igual a 10)
      }
   }
};


PD: Todas estas cosas están muy bien explicadas en la propia ayuda del programa.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Jul 2009 09:45 pm
oo gracias, U_U, bueno, todavia no capto, array.splice(0, 1), como me elimina "el primer elemento", que pasa si no elimina elementos del array?? y porque nadamas me borra 1, eso es lo que no entiendo si cuando yo muevo el mouse creo mas de uno?
U_U

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 30 Jul 2009 10:33 pm
splice sirve para eliminar los elementos que queramos de un array, el primer parámetro es el índice del primer elemento que queremos eliminar, y el segundo es el número de elementos que vamos a eliminar a partir de aquél. Como los elementos de los arrays comienzan a numerarse por el 0, splice(0, 1) elimina a partir del elemento 0 (el primero) una cantidad de 1 elemento. Si fuese splice(1, 1) eliminaríamos el segundo, si fuese splice(1, 2) eliminaríamos el segundo y el tercero.
La razón de que eliminemos el primer elemento es la siguiente: piensa que en el evento onMouseMove vamos creando clips con un alpha de 50, y a su vez cada vez que entramos en un fotograma en el onEnterFrame vamos disminuyendo el alpha de los clips que hemos ido creando en 5 puntos, luego los clips que se han creado primero, que serán los primeros del array, siempre van a tener un alpha menor. Por eso cuando se cumple la condición if (array[i]._alpha<=10) ya sabemos que esos elementos del array son los primeros, luego sólo tenemos que eliminar sus clips y eliminarlos del array (porque con el removeMovieClip no se eliminan del array).
La verdad es que la lógica de esta función es un poco enrevesada, pero espero que me hayas entendido.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Jul 2009 10:36 pm
U_U, gracias, y que rapidez =)

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8

 

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