Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не удаляются объекты. (http://www.flasher.ru/forum/showthread.php?t=151211)

Nemez 24.02.2011 14:11

Не удаляются объекты.
 
В конце игры удаляю объекты одного типа.
Код AS3:

private function removeCloud() : void {
for (var p:int = 0; p < _view.numChildren; p++){
      var cloud:CloudCloud = _view.getChildAt(p) as CloudCloud;
      if (cloud != null){
        _view.removeChild(cloud );
        }
  }
}

Не удаляются, или удаляются не все.

gloomyBrain 24.02.2011 14:24

Цитата:

Не удаляются, или удаляются не все
Потому как на каждой итерации цикла p увеличивается, а _view.numChildren уменьшается.
Правильный способ:
Код AS3:

while (_view.numChildren) {
        _view.removeChildAt(0);
}


Nemez 24.02.2011 14:33

Spasibo. Но... там есть разные объекты, и если нулевым будет объект другого типа , то не сработает?

gloomyBrain 24.02.2011 15:42

Да, невнимательно прочитал первый раз...
Ну тогда проще всего сохранить все Cloud'ы в массив и идти по нему циклом, удаляя каждый элемент массива из отображения

ChuwY 24.02.2011 16:46

А что нам мешает просто пройтись циклом с конца, проверяя текущую позицию?
Должно сработать.

-De- 24.02.2011 17:15

Код AS3:

private function removeCloud() : void {
for (var p:int = 0; p < _view.numChildren;){
      var cloud:CloudCloud = _view.getChildAt(p) as CloudCloud;
      if (cloud != null){
        _view.removeChild(cloud );
        }
        else p++;
  }
}

=(

ChuwY 24.02.2011 17:23

Каждый раз запрашивать намчилдрен дольше, чем один раз.
Да и вообще -- все это лишние телодвижения.

Код AS3:

function removeCloud():void {
  for (var i : int = _view.numChildren - 1; i >= 0 ; i--) {
    var cloud : CloudCloud = _view.getChildAt(i) as CloudCloud;
    if (cloud) {
      _view.removeChild(cloud );
    }
  }
}

и все

Nemez 24.02.2011 17:31

Spasibo vsem.


Часовой пояс GMT +4, время: 20:38.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.