Форум 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=82586)

Micar 16.07.2006 17:14

hitTest для клипов в двух массивах
 
Добрый день!

Есть прямоуголные клипы, хаотично плавно двигающиеся.

сверху на них "падают капли" - клипы маленького диаметра (3-4пикс)

первые в одном массиве (создаются циклом), вторые - во втором, "капель" всего три, они потом возвращаются наверх, откуда опять "капают", и т.д.

пытаюсь сделать так, чтобы при пересечении капли и прямоугольника, последний "выпадал", падал вниз, через hitTest, таким образом:

в цикле, где создаются капли и где прописано их движение вниз через EnterFrame, вновь создаю цикл с тем же количеством итераций, что и цикл создающий прямоугольники, и запускаю проверку HitTest

Код:

if(this.hitTest(arr[n]) {
 arr[n].onEnterFrame = function() {
  //упади, прямоугольник!
}
}

но
(1) падает не тот, на который попала "капля",
(2) и вообще - через раз!

что-то я не так делаю... :) а вот что? и как с этим бороться?
то ли капли слишком маленькие и быстро летят (это может мешать? )
то ли hitTest я как-то не так проверяю...

заранее спасибо всем кто сможет чего присоветовать :)

silin 16.07.2006 20:03

попробуй смотреть хиттест прямоугольников с _x,_y капель:
if( arr[n].hitTest(this._x,this._y,true){..

Usnul 17.07.2006 03:22

Вложений: 1
я думаю проблема в скорости движения относительно скорости обработки события, грубо говоря: пересечение проверяется тогда, когда капля уже миновала зону пересечения. Решается проблема путем математического расчета момента пересечения, тоесть мы просто вычисляем "когда" капля стукнет прямоугольник. есть еще метод, более навороченный. В аттаче исходник который использует этот метод.


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

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