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

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

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

Регистрация: Jan 2007
Сообщений: 36
По умолчанию про скорость hittest() и поиск альтернативы...

Господа, многократно утверждалось и на этом форуме в частности, что hittest медлителен, и для определения столкновений объектов в играх эффективнее применение геометрических алгоритмов.
Однако не все так просто на самом деле...
Предположим требуется определить факт пересечения двух прямоугольников. На вскидку два способа :
1. определить соотношение проекций полудлин сторон прямоугольников
2. определить расстояние между точками фигур по теореме Пифагора.
во втором способе для большинства случаев достаточно типа этого:
Код:
                var test:Boolean=false;
                var dx:Number = _x-obj2._x;
		var dy:Number = _y-obj2._y;
		var dist:Number = Math.sqrt(dx*dx+dy*dy);
		if (dist<obj2._width) test=true;
		return test;
но выясняется что и этот способ на практике работает медленнее чем HITTEST! в цикле на 1000 повторений разница между этим способом и хиттестом составляла 2-3 миллисекунды.
А первый способ (через проекции полудлин) вообще работал медленнее хиттеста при максимальной оптимизации на 8-10 миллисекунд.
Собственно вопрос - как же обогнать хиттест, раз он такой "медленный"?

Старый 27.02.2007, 12:18
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Использовать hitTest у BitmapData.
Обычный hitTest не годится для объектов непрямоугольной формы.

Старый 27.02.2007, 12:47
farmonol вне форума Посмотреть профиль Отправить личное сообщение для farmonol Найти все сообщения от farmonol
  № 3  
Ответить с цитированием
farmonol

Регистрация: Jan 2007
Сообщений: 36
Цитата:
Сообщение от __etc
Использовать hitTest у BitmapData.
Обычный hitTest не годится для объектов непрямоугольной формы.
нет речь как раз о том, что требуется установить факт столкновения между объектами прямоугольной формы, причем более быстрым способом чем это делает hittest().

Старый 28.02.2007, 01:28
Webas вне форума Посмотреть профиль Отправить личное сообщение для Webas Найти все сообщения от Webas
  № 4  
Ответить с цитированием
Webas
[+ 1.11 19.12.2005]
[+ 1.11 6.04.2006]
 
Аватар для Webas

Регистрация: Nov 2003
Сообщений: 133
Отправить сообщение для Webas с помощью ICQ
http://noregret.org/tutor/index.html там есть на русском...

Старый 28.02.2007, 01:37
CCCPirate вне форума Посмотреть профиль Отправить личное сообщение для CCCPirate Найти все сообщения от CCCPirate
  № 5  
Ответить с цитированием
CCCPirate
 
Аватар для CCCPirate

Регистрация: Jun 2006
Сообщений: 1,061
А хиттест разве медленный? че та не заметил....

Старый 28.02.2007, 09:53
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
мне тоже удивительно как скриптовые методы могут быть быстрее 'родных', нигде таких примеров не встречал..
можно говорить о преимуществе каких-то алгоритмов в сравнении с тупым перебором хиттестов в конкретной задаче,
но обогнать хиттест скриптом в равных условиях не выйдет, имхо

Старый 28.02.2007, 13:31
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 7  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Ну в истории Flash Player были такие случаи =)

Например Питер Халл написал к пятой версии флэш плеера прототип для парсинга XML который работал быстрее встроеного =)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 02.03.2007, 12:44
MyXus вне форума Посмотреть профиль Отправить личное сообщение для MyXus Посетить домашнюю страницу MyXus Найти все сообщения от MyXus
  № 8  
Ответить с цитированием
MyXus
 
Аватар для MyXus

Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
А я писал MotionTween, тоже был быстрее -)
И удобнее (для меня). До сих про в каждой задаче его юзаю.

Старый 02.03.2007, 14:05
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 9  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
тут важно уточнить быстрее чем что: твина на линейке? - это было бы интересно глянуть..
если речь о mx.transitions.Tween, то это не встроенный класс, а тот же скрипт..

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

Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
Действительно mx.transitions.Tween.

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

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

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


 


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


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