Как удалить / перезагрузить мувиклип / графику во Flash CS5 с AS3
У меня есть setupBoard(); и setupBlocks();
в моей функции:
function init(e)
{
setupBoard();
removeEventListener(Event.ENTER_FRAME , init);
setupCat();
setupBlocks();
}
function setupBoard()
{
var columns:Array = new Array();
var i,j:int;
var _place:place;
for (i = 0; i < 11; i++)
{
columns = [];
for (j = 0; j < 11; j++)
{
_place = new place();
_place.thisX=i;
_place.thisY=j;
_place.thisDistance=Math.min(i+1,j+1,11-i,11-j)*11;
_place.y = 56 * i + 3;
_place.x = 5 + 71 * j + 35*(i%2);
_place.buttonMode=true;
_place.addEventListener(MouseEvent.CLICK, setBlock);
columns[j] = _place;
// SÆTTER TAL PÅ BRIKKERNE
_place.thisText.text = _place.thisDistance + " - " + _place.thisX + " : " + _place.thisY;
addChild(_place);
}
rows[i] = columns;
}
}
"Место" - мувиклип
эта функция загружается, когда игра запускается и когда игра заканчивается / завершается.
setupBoard, настройка платы ofc, и setupBlocks устанавливают некоторые мувиклипы, которые содержат некоторое графическое изображение.
Вот мой вопрос, как мне удалить / перезагрузить все блоки, когда игра снова входит в эту функцию? они просто наложены друг на друга, что мне совсем не нравится..
заранее спасибо
1 ответ
Если я правильно понял, то, что вы хотите сделать, это удалить все предыдущие блоки (из последнего раза, когда вы запускали функцию настройки), когда вы запускаете установку во второй раз.
Чтобы сделать это, вы должны создать функцию, которая зацикливает ваши массивы строк и столбцов, и для каждого найденного объекта Place он делает следующее: удаляет его со сцены, удаляет все прослушиватели событий и, наконец, устанавливает для него значение null. Ваша функция может выглядеть примерно так (и вы могли бы вызвать ее непосредственно перед повторным вызовом setup):
for (i = 0; i < rows.length; i++)
{
var column:Array = rows[i];
for (j = 0; j < column.length; j++)
{
var place:Place = column[j];
if (contains(place))
{
removeChild(place);
}
place.removeEventListener(MouseEvent.CLICK, setBlock);
place = null;
}
column = [];
}
row = [];
Я просто написал это прямо в коробку, так что это не проверено. Но в основном он выполняет три действия, необходимые для удаления этих объектов из представления, и очищает все, что может помешать их освобождению из памяти сборщиком мусора.
Надеюсь, это поможет.
Debu