Если вы не хотите, чтобы MC повторялся, просто удалите его из списка при его возврате.
function getRandomMovie():MovieClip
{
var index:int = Math.floor(Math.random()*movieList.length);
var mcClass:Class = movieList.splice(index,1)[0];
return new mcClass();
}
Вот версия, использующая второй массив, чтобы позволить вам повторить список каксогласно комментарию TheSHEEEP:
function getRandomMovie():MovieClip
{
if(!movieList.length) {
movieList = spareList;
spareList = [];
}
var index:int = Math.floor(Math.random()*movieList.length);
var mcClass:Class = movieList.splice(index,1)[0];
spareList.push(mcClass);
return new mcClass();
}
Удаление предыдущего мувиклипа
Чтобы удалить предыдущий мувиклип, необходимо сохранить его за пределами nextClick
функция, так что вы можете удалить его, прежде чем получить следующий:
//declare mc outside
var mc:MovieClip;
function nextClick(event:MouseEvent):void
{
//remove mc first
if(mc && mc.parent) removeChild(mc);
//(optional) free up old mc for garbage collection
//now replace the contents of mc with a new random instance
mc = getRandomMovie();
addChild(mc);
mc.x = stage.stageWidth / 2;
mc.y = stage.stageHeight / 2;
}
Конечно, вам может потребоваться сделать больше, чем просто удалить предыдущий mc.Прежде чем указывать ссылку mc
на новый объект, вы должны освободить другой объект для сборки мусора, остановив выполнение любого внутреннего кода и удалив прослушиватели.