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

_LennY_ 07.09.2011 16:25

не работает проверка hitTest
 
Вложений: 1
Уважаемые форумчане,
Не могу разобраться с проверкой наложения двух муви клипов. Есть желание, создать игру "мухобойка", тоесть один муви клип рандомно перемещается по области экрана (изображая муху), а второй мувик (изображая саму мухобойку), прикреплен к курсору мышки. Вопрос - как сделать проверку, при нажатии на правую кнопку мыши, накладываются ли один мувик на другой, или нет ?

вот мои действия :

1. создаю два мувиклипа : первый "mou", второй "muh"
2. в первом клипе (mou) в Actions прописываю следующий код :

Код:


// делаем курсор мыши
onClipEvent (enterFrame) {
startDrag( this, true );
}
// при нажатии выключаем его
onClipEvent (mouseDown){
        stopDrag ();
}

3. вo втором клипе (muh) в Actions пишу :

Код:

// задаём рандомное перемещение "Мухи"
onClipEvent (load) {
 speed = 5;
 endX = random (500);
 endY = random (400);
}
// проверяем совпадение клипов
onClipEvent (mouseDown){
if (_root.muh.hitTest(_root.mou)) {
// если "true" пишем "mou зашёл на muh"
        trace("mou зашёл на muh");
}
else
{
// если "false" пишем "mou прошёл мимо  muh"
trace("mou прошёл мимо  muh");        }
}
// замедляем перемещение мувика "muh" к конечной точке, определённой рандомом
onClipEvent (enterFrame) {
 _x += (endX-_x)/speed;
 _y += (endY-_y)/speed;
}

При таком коде trace всегда выдаёт - "mou прошёл мимо muh" вне зависимости от положения курсора....

Что я делаю не так ?

исходник в "Macromedia flash 8" прилагаю.

Буду признателен за любые мысли и подсказки ))

Zik. 07.09.2011 17:38

В клипах mou и muh удаляешь весь код.
Каждому клипу даёшь имя в Instance Name (Выделяешь клип и нажимаешь Ctrl + F3) mou и muh.
В кадре пишешь код:
Код AS1/AS2:

var speed:Number = 5;
var endX:Number = random(500);
var endY:Number = random(400);
stop();
startDrag(mou, true);
onMouseDown = function():Void {
        mou.stopDrag();
        if (muh.hitTest(mou)) {
                trace("mou зашёл на muh");
        } else {
                trace("mou прошёл мимо  muh");
        }
}
onEnterFrame = function():Void {
        muh._x += (endX - muh._x) / speed;
        muh._y += (endY - muh._y) / speed;
}


_LennY_ 07.09.2011 17:53

ZIK68, Спасибо огромное... всё заработало как надо =)


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

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