Показать сообщение отдельно
Старый 22.10.2009, 14:12
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 16  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
На самом деле делать такое в один проход опрометчиво. если один спрайт, например, сталкивается с несколькими, то решение "в один проход" отработает только одно столкновение. Сразу после первого столкновения и удаления другие спрайты уже кагбе ни с кем не сталкиваются.

Код AS3:
public function hitsp():void {
        // здесь будем отмечать кандидатов на удаление
        var vrArr:Array = new Array();
        var vzArr:Array = new Array();
 
        var i:uint;
        var j:uint;
 
        // сначала фиксируем все столкновения
        for each (i in listvr) {
        for each (j in listvz) {
             if (listvr[i].hitTestObject(listvz[j])) {
                  vrArr[i] = 1;
                  vzArr[j] = 1;
             }
        }
        }
 
        // а потом лишь зачисточка
        for each (i in listvr) {
             if (vrArr[i] == 1) {
                  removeChild(listvr[i]);
                  delete listvr[i];
             }
        }
        for each (j in listvz) {
             if (vzArr[j] == 1) {
                  removeChild(listvz[j]);
                  delete listvz[j];
             }
        }
}
__________________
Поймай яблоко 2!