#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 за раз, пока не закончите, чтобы не было дубликатов.