Как удалить / перезагрузить мувиклип / графику во Flash CS5 с AS3 - PullRequest
0 голосов
/ 13 мая 2011

У меня есть 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;
    }
}

"Место" - это MovieClip

, эта функция загружается при запуске игры и когда игразакончить / завершить ..

setupBoard, настроить плату ofc, и setupBlocks настроить некоторые мувиклипы, содержащие некоторые графические элементы.

Вот мой вопрос, как мне удалить / перезагрузить все блокикогда игра снова войдет в эту функцию?они просто наложены друг на друга, что мне совсем не нравится ..

Заранее спасибо

1 Ответ

1 голос
/ 14 мая 2011

Если я правильно понял, то, что вы хотите сделать, это удалить все предыдущие блоки (с момента последнего запуска функции настройки) при повторном запуске программы установки.

Для этого вам следуетсоздайте функцию, которая зацикливает ваши массивы строк и столбцов, и для каждого найденного объекта Place она делает следующее: удаляет его со сцены, удаляет все прослушиватели событий и, наконец, устанавливает для него значение null.Ваша функция может выглядеть примерно так (и вы могли бы вызвать ее непосредственно перед повторным вызовом программы установки):

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 = [];

Я просто написал это прямо в коробку, поэтому она не тестировалась.Но в основном он выполняет три действия, необходимые для удаления этих объектов из представления, и очищает все, что может помешать их освобождению из памяти сборщиком мусора.

Надеюсь, это поможет.

Дебу

...