Tengo una serie de clips de película y quiero ponerlos en el escenario. entonces tienen que ser únicos y elegidos al azar.Elegir el elemento aleatorio de una matriz Actionscript 3
¿cómo puedo hacer eso?
gracias por su tiempo
Tengo una serie de clips de película y quiero ponerlos en el escenario. entonces tienen que ser únicos y elegidos al azar.Elegir el elemento aleatorio de una matriz Actionscript 3
¿cómo puedo hacer eso?
gracias por su tiempo
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];
}
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;
}
¿por qué ordenar y reorganizar la matriz cuando puede obtener un índice aleatorio? –
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
sí, ¡tienes razón! –
hola, gracias por la respuesta, pero ¿cómo puedo ponerlos en la satge? lo he intentado con addChild (matriz [idx]) pero no funciona; – CMS
'stage.addChild (getRandomElementOf (movieClipArray));' o 'stage.addElement (getRandomElementOf (movieClipArray));' –
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) –