Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   hitTest Многих объектов (http://www.flasher.ru/forum/showthread.php?t=140722)

Avrilka 06.06.2010 16:32

hitTest Многих объектов
 
Люди помогите! :rolleyes:

Вот допустим у меня есть 100 обьектов 1ого типа а1, а2, а3 ... а100 и 100 объектов второго типа б1, б2, б3, .. б100.

Вопрос: как узнать что б1, б2, б3 ...б100 столкнулись с любым из объектов а.

Неустраивающий код:
Код AS1/AS2:

onClipEvent(enterFrame) {
    for(i=1; i<=100; i++) {
        if(this.hitTest(_root['a'+i])) {
            trace('Столкнулись!')
        }
    }
}

Он не устраивает потому что жрет много памяти. :mad:

Помогите плиз :rolleyes:

in4core 06.06.2010 18:19

Код AS1/AS2:

this.onEnterFrame = function() {
for(var i=1; i<100; i++) {
  if(_root["b"+i].hitTest(_root["a"+i]) { trace("сталкнулись заразы")}
}}

В этом случае 1=1;
А если надо проверять ВАЩЕ любой a клип без разницы. То сначала нужно создать клип контейнер для мини клипов(100) и проверять хиттест через контейнер

Avrilka 06.06.2010 18:25

Так прикол в том что перебор много памяти жрет! Подругому никак? Без цикла?

in4core 06.06.2010 19:03

Попробуй сделать 2 контейнера. в 1м а клипы в другом б клипы. И проверяй только хиттесты для контейнеров

Avrilka 06.06.2010 20:36

тоже не выход! а если у меня движение хаотическое?
2 контейнера в таком случае всегда будут перекрываться. нет... другого выхода нету?

in4core 07.06.2010 00:33

Да хоть супер хаотичное) Контейнеры эластичны

Avrilka 07.06.2010 17:54

всмысле? если не сложно можешь сделать fla и скинуть? просто очень нужно! Контейнер как я понимаю - другой муви клип в котором напиханы объекты?

in4core 07.06.2010 18:36

ну типа того. Но ваще конечно интрефрейм тока. А что за тема у вас? Не ужто снег или феерверк делаете?))))

Avrilka 07.06.2010 19:04

да нет ... что то вроде товер дефенса. Генерится куча крипов и куча бюлетов ...

NoCD 08.06.2010 00:21

для решения этой задачи, самый простой способ, это сократить количество юнитов.
Если по сложнее, то нужно написать легкий и правильный алгоритм. например на основе fps. то есть вместо каждых 30 кадров в секунду проверять несколько раз. и не пачкой по 200 юнитов в цикле, а хотя бы по 20.


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

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