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

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

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

Регистрация: May 2009
Сообщений: 45
Question hitTest - области его действия

Ребят, помогите разобраться с проблемой.
У меня есть карта в игре, на которую можно помещать объекты. Дело в том, что объекты можно помещать не везде. Те участи, где размещатся нельзя я зарисовала и сделал из этого выделения мувик. Ну и написала что если мувик объекта касается мувика запрещенных областей - то объект не размещается.
Дело в том, что hitTest действует по рамке мувика. Можно ли сделать hitTest, который будет работать именно с телом мувика а не с его границами?
Если нет - то как иначе можно осуществить то, что мне нужно?
Заранее большое спасибо!

Старый 11.06.2009, 00:55
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 2  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Цитата:
Дело в том, что hitTest действует по рамке мувика.
Разбирайтесь, в чём проблема.
Потому что в действительности hitTest работает либо по содержимому клипа, либо по площади ограничивающей его коробки (в зависимости от параметра).

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

Регистрация: May 2009
Сообщений: 45
Этот параметр может быть задан только в случае задания параметров x и y.
А мне нужен объект а не координата.

При задании объекта - проверяется факт пересечения ограничивающих рамок объекта target и указанного мувиклипа, возвращая true, если они имеют хотя бы одну общую точку.


Последний раз редактировалось Angelinka; 11.06.2009 в 01:19.
Старый 11.06.2009, 11:40
Stargazer вне форума Посмотреть профиль Отправить личное сообщение для Stargazer Найти все сообщения от Stargazer
  № 4  
Ответить с цитированием
Stargazer

Регистрация: Nov 2008
Сообщений: 528
Любопытно. Сейчас взгляну в справку.

Добавлено через 18 минут
Вы правы.
Можно попробовать выложить фигуру коробками и вместо хит-теста написать функцию, которая будет в цикле проверять hitTest у всех коробок.

Старый 11.06.2009, 16:56
Angelinka вне форума Посмотреть профиль Отправить личное сообщение для Angelinka Найти все сообщения от Angelinka
  № 5  
Ответить с цитированием
Angelinka

Регистрация: May 2009
Сообщений: 45
Да, такая идея у меня уже была. Думала, может есть способ по-проще... Спасибо.

Старый 11.06.2009, 18:56
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
bitmap hitTest

на крайний случай, если ещё и важно, в какой точке столкновение, а математикой заниматься лень:
1) определяем границы мувика с хиттестом в цикле - поточечено собираем контур (хотя, тут тоже лучше через битмапу - быстрее)
2) определяем столкновения уже этих точек

Старый 12.06.2009, 10:35
LeXa4 вне форума Посмотреть профиль Отправить личное сообщение для LeXa4 Посетить домашнюю страницу LeXa4 Найти все сообщения от LeXa4
  № 7  
Ответить с цитированием
LeXa4
 
Аватар для LeXa4

Регистрация: Jun 2009
Сообщений: 42
Отправить сообщение для LeXa4 с помощью ICQ
По-моему границы можно определить только у круга.

Нахождением радиуса...

А у других фигур только по рамке клипа

Старый 21.08.2009, 19:55
2xR вне форума Посмотреть профиль Отправить личное сообщение для 2xR Найти все сообщения от 2xR
  № 8  
Ответить с цитированием
2xR

Регистрация: Aug 2009
Сообщений: 2
День добрый! У меня та же проблема, что и у автора. В Аскрипте я несколько дней. Я написал такой код для управления мувиклипом в кадре:
Код:
onClipEvent (load) {
	var pv = 0;
	var psc = ((Math.PI/2)/90);
}
onClipEvent (keyDown) {
	if (Key.isDown(37)) {
		_rotation -= 5;
		pv = pv+5;
	}
	if (Key.isDown(39)) {
		_rotation += 5;
		pv = pv-5;
	}
	if (Key.isDown(38)) {
		var Xor = _x;
		var Yor = _y;
		_y += 5*-(Math.sin(pv*psc));
		_x += 5*(Math.cos(pv*psc));
	}
	if (Key.isDown(40)) {
		var Xor = _x;
		var Yor = _y;
		_y -= 5*-(Math.sin(pv*psc));
		_x -= 5*(Math.cos(pv*psc));
		Updateafterevent();
	}
}
onClipEvent (enterFrame) {
	if (_root.flor.hitTest(this)) {
		this._x = Xor;
		this._y = Yor;
	}
}
При столкновении с flor, клип ведет себя,
как и задумывалось. Вопрос - как создать "клона" клипа "flor", что бы не писать код столкновения на каждый случай?


Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
bitmap hitTest

на крайний случай, если ещё и важно, в какой точке столкновение, а математикой заниматься лень:
1) определяем границы мувика с хиттестом в цикле - поточечено собираем контур (хотя, тут тоже лучше через битмапу - быстрее)
2) определяем столкновения уже этих точек

Как можно сделать поточечный контур?

Старый 23.08.2009, 16:10
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Так как вы уже не пишут лет 10.
Поточечный контур делается так - берем пиксель где нибудь вверху и опускаем его плавно до момента, когда он соприкоснется с объектом (hitTest иль getPixel).
Получили 1 точку. Двигаемся вправо - получаем вторую. Так получаем верхний контур. Аналогично получаем остальные. Хотя, я уверен, есть более быстрые и простые способы, просто необходимости их изучать пока не было.

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

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

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


 


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


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