Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.09.2011, 16:25
_LennY_ вне форума Посмотреть профиль Отправить личное сообщение для _LennY_ Найти все сообщения от _LennY_
  № 1  
Ответить с цитированием
_LennY_
 
Аватар для _LennY_

Регистрация: Sep 2011
Сообщений: 19
Question не работает проверка hitTest

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

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

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" прилагаю.

Буду признателен за любые мысли и подсказки ))
Вложения
Тип файла: rar test1.rar (19.7 Кб, 27 просмотров)

Старый 07.09.2011, 17:38
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 2  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,723
В клипах 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;
}

Старый 07.09.2011, 17:53
_LennY_ вне форума Посмотреть профиль Отправить личное сообщение для _LennY_ Найти все сообщения от _LennY_
  № 3  
Ответить с цитированием
_LennY_
 
Аватар для _LennY_

Регистрация: Sep 2011
Сообщений: 19
ZIK68, Спасибо огромное... всё заработало как надо =)

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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