Comunidad de diseño web y desarrollo en internet online

Ayuda con posición aleatoria de clips de películas

Citar            
MensajeEscrito el 27 Sep 2008 07:31 pm
:D Buenas a todos, tengo el siguiente ejemplo: trata de posicionar aleatoriamente clips de películas, el problema es que al momento de posisionarlas, una se pone encima de la otra, mi pregunta es. Cómo puedo hacer para que los clips de películas tengan un margen de separación, pues para que no se pongan uno encima del otro. GRACIAS DE ANTEMANO :wink:

Este es el ejemplo, y más abajo el cogido que estoy utilizando:

Código :

stop ();
MovieClip.prototype.randmo_posicion = function ()
{
    x = this._parent._width - this._width;
    this._x = Math.floor(Math.random() * x);
};
boton.onRelease = function ()
{
    _root.contenedor.c1.randmo_posicion();
    _root.contenedor.c2.randmo_posicion();
    _root.contenedor.c3.randmo_posicion();
    _root.contenedor.c4.randmo_posicion();
    _root.contenedor.c5.randmo_posicion();
}

Por josemiguelmm87

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Sep 2008 11:39 pm
Es muy difícil que lo logres con un prototype, ya que la función no depende de un solo movie sino de varios, lo mejor es hacer una función a la que le mandes el nombre de los movies que debe situar y el MovieClip que los contiene y que esta se ocupe de desorganizar el orden de los movies y después situarlos a la misma distancia uno de otro, algo como esto:

Código ActionScript :

stop();

//---Prototype de indexOf  
Array.prototype.indexOf = function(search):Number  {

   var total:Number = this.length;
   var index:Number = -1;
   var item:Number = 0;
   var finded:Boolean = false;

   while (item < total && !finded) {

      if (this[item] == search) {
         index = item;
         finded = true;
      } else {
         item++;
      }
   }
   return index;

};

function randomPos(movies:Array, holder:MovieClip):Void {

   //---Desordenar el arreglo
   var newMovies:Array = new Array();
   var actual:Number = 0;
   var total:Number = movies.length;
   var nombre:String;
   var rand:Number;

   while (actual < total) {

      rand = Math.floor(Math.random() * total);
      nombre = movies[rand];

      if (newMovies.indexOf(nombre) < 0) {

         newMovies.push(nombre);
         actual++;

      }
      
   }
   
   //---Calcular el ancho total de los movies
   var anchoMovies:Number = 0;
   
   for(var i:Number = 0; i < total; i++){
      
      anchoMovies += holder[newMovies[i]]._width;
      
   }
   
   //---Calcular la separación que deben de tener
   var separa:Number = (holder._width - anchoMovies) / (total + 1);
   
   //---Darle posición a los movies según la separación calculada   
   var posX:Number = separa;
   
   for(var i:Number = 0; i < total; i++){
      
      holder[newMovies[i]]._x = posX + holder[newMovies[i]]._width / 2;
      posX += holder[newMovies[i]]._width + separa;
      
   }
   
}

boton.onRelease = function() {
   
   randomPos(["c1", "c2", "c3", "c4", "c5"], contenedor);
   
};

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 28 Sep 2008 01:19 am
Gracias elchininet por la pronta respuesta, voy a hacer lo que me dices y ta pronto lo haga, te lo agradeeceré de nuevo.

Por josemiguelmm87

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Sep 2008 01:32 am
Efectivamente elchininet, tu ayuda me solucionó el problema, Gracias de nuevo aquí abajo el nuevo archivo con tu código:

Por josemiguelmm87

6 de clabLevel



 

firefox

 

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