Выбор случайного элемента массива Actionscript 3

#arrays #actionscript-3 #actionscript #random

#массивы #actionscript-3 #actionscript #Случайный

Вопрос:

У меня есть массив видеороликов, и я хочу поместить их на сцену. поэтому они должны быть уникальными и выбранными случайным образом.

как я могу это сделать?

спасибо за ваше время

Ответ №1:

Вы можете получить случайное число, используя Math.random() это, вернет число от 0 до 1.

Итак, для получения случайного элемента массива используйте это:

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

Комментарии:

1. привет, спасибо за ответ, но как я могу поместить их в систему? я пробовал с addChild(array[idx]), но не работает;

2. stage.addChild(getRandomElementOf(movieClipArray)); или stage.addElement(getRandomElementOf(movieClipArray));

3. Вам нужно будет уже установить свойства x и y для видеороликов перед добавлением (или вы даже можете сделать это после добавления)

4. у меня есть x и y для mc var min_x:Number = stage.x — 2 * (breite / 4) — 50; var max_x:Number = stage.x — (breite / 4) — 50; var mid_x:Number = stage.x — 50; var min_y:Number = 0; var max_y:Number = hoehe / 2; var mid_y:Number = hoehe; var n:uint = array1.length; для (var i:uint = 0; i < n; i ) { var mc:MovieClip = array1[i]; mc.x =Math.round(Math.random() * (max_x — min_x) min_x); mc.y = Math.round(Math.random() * (max_y — min_y) min_y); }

5. Это работает отлично… Я пробовал использовать addChild, и все в порядке

Ответ №2:

Если Array у вас уже есть, вы должны быть в состоянии определить случайную сортировку, затем вы можете добавить их на сцену по мере необходимости.

 //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;
}
  

Комментарии:

1. зачем сортировать и переупорядочивать массив, когда вы можете просто получить случайный индекс?

2. Я предположил, что комментарий об «уникальности» в вопросе OP указал, что он хотел убедиться, что клипы не были извлечены несколько раз. При желании вы можете создать массив индексов, соответствующий массиву видеороликов … рандомизировать массив индексов… затем извлекайте из рандомизированного списка по 1 за раз, пока не закончите, чтобы не было дубликатов.