Я пытаюсь рандомизировать позиции мувиклипов в векторе. быть добавленным в список отображения основного этапа. У меня есть эта функция, которая генерирует мувиклипы с их свойствами:
private function initMovieClips():Vector.<MovieClip>
{
var initVec:Vector.<MovieClip> = new Vector.<MovieClip>();
for (var i:int = 0; i < Math.ceil(this.numBlocks / 2); i++)
{
var typeVarianceChance:Number = Math.random();
var colorVarianceChance:Number = Math.random();
var ranType:Number = Math.floor(this.numTypes * Math.random());
var coRanType:Number;
if (typeVarianceChance < .2)
{
coRanType = Math.floor(this.numTypes * Math.random());
} else {
coRanType = this.typeHash[ranType];
}
var ranColor:Number = Math.floor(this.imageURLs.length * Math.random());
var coRanColor:Number;
if (colorVarianceChance > .1)
{
coRanColor = Math.floor(this.imageURLs.length * Math.random());
} else {
coRanColor = ranColor;
}
var mc:MovieClip = new MovieClip();
var comc:MovieClip = new MovieClip();
mc.type = ranType;
comc.type = coRanType;
mc.color = ranColor;
comc.color = coRanColor;
initVec.push(mc,comc);
}
return initVec;
}
Затем растровые изображения загружаются и рисуются на каждом из изображений. Затем я вызываю эту функцию для случайного «перемешивания» вектора.
private function shuffle(vec:Vector.<MovieClip>):Vector.<MovieClip>
{
var shuffled:Vector.<MovieClip> = new Vector.<MovieClip>();
var origLength:uint = vec.length;
for (var i:int = 0; i < origLength; i++){
var ranPos:uint = Math.floor(Math.random() * vec.length);
shuffled.push(vec[ranPos]);
delete vec[ranPos];
}
return shuffled;
}
Если я не вызову функцию перемешивания, растровые изображения будут отображаться просто отлично. Но если я вызову функцию перемешивания в моем векторе. некоторые мувиклипы не отображаются на экране после того, как я добавляю их в список отображения (который я проверял и знаю, что происходит). Некоторые появляются случайно, а некоторые нет. Какие из них отображаются, а какие не кажутся случайными каждый раз, когда я запускаю свое приложение (может, это как-то связано с моей функцией initMovieClips
, которая использует псевдослучайный код?).
Я пытался реализовать функцию shuffle в разных точках моего кода, в местах, где растровые изображения уже были нарисованы, и в местах, где я даже не вызывал функцию, чтобы начать загрузку растровых изображений (поэтому я не Не думаю, что это проблема с потоками). Я даже пытался вставить код, чтобы нарисовать простой тестовый круг в каждом графическом свойстве MovieClip. Просто чтобы увидеть, была ли это проблема с растровыми изображениями, но то, что не было нарисовано, не показывало растровое изображение или тестовый круг. Это наводит меня на мысль, что это проблема самого графического свойства. Что оставляет меня полностью в тупике. Любые идеи о том, что это может быть?