Comunidad de diseño web y desarrollo en internet online

Posicion alteatoria

Citar            
MensajeEscrito el 07 Oct 2008 08:25 pm
Buenas tengo el siguiente swf que posiciona los clip de peliculas c1, c2, c3, c4, c5 de forma aleatoria, estos clips están dentro de otro clip de película que es el contenedor, que está con borde amarillo.AQUI MI DUDA quiero posicionarlos igualmente forma aleatoria pero no en el contenedor, sino en alguna parte específica de la escena, por ejemplo al centro-superior, repito SIN UTILIZAR EL CONTENEDOR gracias por sus ayudas, abajo del ejemplo está el código utilizado


Código :

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); 
    
}; 
[quote=""]

Por josemiguelmm87

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Oct 2008 09:28 pm
No entiendo tu duda. Si pudiste colocarlos en forma aleatoria dentro del contenedor ¿por qué se te hace complicado hacer lo mismo fuera de él? No quiero pensar que simplemente te bajaste un código por ahí y ahora quieres que nosotros te lo arreglemos.

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 07 Oct 2008 09:55 pm
No amigo, no me baje ningun código, ya lo habia empezado de alguna manera incluso pedí ayuda para hacerlo y el usurio elchininet me ayudó a hacerlo aquí el link:
primero está un swf el cual hice y si me posicionaba los movie clips, pero uno encima del otro, y REPITO CON LA AYUDA DE ELCCHININET
[url=http://www.cristalab.com/foros/t61785_ayuda-con-posicion-aleatoria-de-clips-de-peliculas.html]
aquí de nuevo el swf que yo habia echo antes para pedir ayuda, Se los muestro para que no piensen lo mismo que el amigo que dice que me baje el programa



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();
}

aquí el codigo y es simple de no utilizar el contenedor simplemente hay que sacar los clips de peliculas c1...c5 y copiarlos en la escena principal y en el código en vez de

Código :

_root.contenedor.c1.randmo_posicion();
, le quitamos el contenedor así :

Código :

_root.c1.randmo_posicion();
y ya está. Pero en el primero codigo el cual me ayudaron he intentado hacerlo y no me sale. Ahora si alguien pudiese ayudarme se lo agradecería mucho

Por josemiguelmm87

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Oct 2008 09:57 pm
No amigo, no me baje ningun código, ya lo habia empezado de alguna manera incluso pedí ayuda para hacerlo y el usurio elchininet me ayudó a hacerlo aquí el link:
primero está un swf el cual hice y si me posicionaba los movie clips, pero uno encima del otro, y REPITO CON LA AYUDA DE ELCCHININET
[url=http://www.cristalab.com/foros/t61785_ayuda-con-posicion-aleatoria-de-clips-de-peliculas.html]
aquí de nuevo el swf que yo habia echo antes para pedir ayuda, Se los muestro para que no piensen lo mismo que el amigo que dice que me baje el programa



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();
}

aquí el codigo y es simple de no utilizar el contenedor simplemente hay que sacar los clips de peliculas c1...c5 y copiarlos en la escena principal y en el código en vez de

Código :

_root.contenedor.c1.randmo_posicion();
, le quitamos el contenedor así :

Código :

_root.c1.randmo_posicion();
y ya está. Pero en el primero codigo el cual me ayudaron he intentado hacerlo y no me sale. Ahora si alguien pudiese ayudarme se lo agradecería mucho

Por josemiguelmm87

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 08:19 am
El código está hecho para que depende del tamaño del contenedor se busque un espacio entre ellos, en caso de que no exista un contenedor, deberás decirle que espacio deben tener entre uno y otro, ya no tendrías que calcular "anchoMovies" ni "separa", ahora teniendo en cuenta esto, mira en el código donde se le da posiciones en las "_x" a los clips y trata de variar el código para que las "_x" sean según tu necesidad en la pantalla y por otro lado nunca se le dan posiciones en las "_y" deberás añadirle esto también. Intenta hacer esto y si no te resulta postea el código final con los fallos y veremos donde has cometido los errores.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 08 Oct 2008 03:46 pm
OK. elchininet voy a intentar con lo que me dices, GRACIAS. de lograrlo lo subiré el ejemplo para que lo vean. GRACIAS de nuevo

Por josemiguelmm87

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Oct 2008 04:16 pm
OK ya lo hice GRACIAS de nuevo elchininet, acabo de leer tu ayuda y de ya me puse a probarlo para hacerlo, y lo logré. Como les prometí si lo hacía les mostraba el ejemplo, aqui abajo el ejemplo y posteriormente su código, sólo necesitaba un poco de orientación gracias.

Código :

//---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):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++; 
      }  
   } 
   
   var posX:Number = 100; 
   for(var i:Number = 0; i < total; i++){ 
     newMovies[i]._x = posX + newMovies[i]._width / 2;
     posX = posX + newMovies[i]._width + 30;
   } 
} 
boton.onRelease = function() { 
   randomPos([c1, c2, c3, c4, c5]); 
}; 

Por josemiguelmm87

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Nov 2011 07:15 am
Hola,
Estoy probando el código. Veo que funciona y se dispersan en el escenario. En mi caso es que yo quiero que 6 MCs (mc1, mc2, ... mc6), esten juntos siempre (2 filas y 3 columnas), solo que cada vez que cargue el sfw aparezcan en distinto orden.

Gracias por la ayuda.

Por imasumaq

7 de clabLevel



 

chrome

 

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