2011-10-27 16 views

Respuesta

8

Usted puede obtener un número aleatorio usando Math.random() Esto devolverá un número entre 0 y 1.

lo tanto, para conseguir un elemento aleatorio de la matriz, utilice esto:

function getRandomElementOf(array:Array):Object { 
    var idx:int=Math.floor(Math.random() * array.length); 
    return array[idx]; 
} 
+0

hola, gracias por la respuesta, pero ¿cómo puedo ponerlos en la satge? lo he intentado con addChild (matriz [idx]) pero no funciona; – CMS

+0

'stage.addChild (getRandomElementOf (movieClipArray));' o 'stage.addElement (getRandomElementOf (movieClipArray));' –

+0

Deberá haber establecido las propiedades 'x' e' y' de los clips de película antes de agregar (o incluso puede hacerlo después de agregar) –

0

Si ya tiene Array, debería poder definir un orden aleatorio, luego puede agregarlos al escenario según sea necesario.

//get your array as needed... 
var myArray:Array = getYourMovieClipsArray(); 

//randomize it by "sorting" it... 
myArray.sort(randomSort); 

//do something with them... 
for(var i:int=0;i<myArray.length;i++){ 
    addChild(myArray[i]); 
} 



//sorting function 
public function randomSort(objA:Object, objB:Object):int{ 
    return Math.round(Math.random() * 2) - 1; 
} 
+0

¿por qué ordenar y reorganizar la matriz cuando puede obtener un índice aleatorio? –

+0

Supuse que el comentario sobre "único" en la pregunta del OP indicaba que quería asegurarse de que los clips no se sacaran varias veces. Si lo desea, puede crear una matriz de índices para que coincida con la matriz de clips de película ... aleatorice la matriz de índices ... luego extraiga de la lista aleatorizada 1 a la vez hasta que termine para asegurarse de que no haya duplicados. – scunliffe

+0

sí, ¡tienes razón! –

Cuestiones relacionadas