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

CCCPirate 11.03.2007 15:10

Какой hittest быстрее?
 
Уважаемые флэшеры!
Вот пытаюсь сделать меньшую нагрузку на проц в своей игрухе,
очередь дошла до hittestа до этого он был просто
Код:

mc1.hitTest(mc2),
но в некоторых ситуациях я могу довольствоваться и
Код:

mc1.hitTest(mc2.x,mc2.y,false)
Sahpe flag - false по идее должно быть быстрее. так?

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

Спасибо.

BigDan 11.03.2007 15:34

забиваешь хитТест в цикл(i=0;i <= 500), с помощью getTimer() определяешь время работы данного учатска кода(цикла). Меняешь параметры hitTest() и делаешь выводы.

etc 11.03.2007 15:35

Можно ещё попользовать хиттест битмапдаты, он более гибок.

CCCPirate 11.03.2007 16:18

Ну вот потестил,

пришел доложиться о результатах

значит у меня получилось, что на 100000 хиттесов

у функции вида

Код:

mc1.hitTest(mc2) //ушло около 1300 мс
mc1.hitTest(mc2._x, mc2._y, false) //тоже около 1300 мс
mc1.hitTest(mc2._x, mc2._y, true) //около 1600 мс

ну а если клипы в разных координатных сетках?( как в моем случае)
тогда нам приходится еще localToGlobal юзать, который сам посибе жрет около 1600 мс

а вместе:

Код:

coord.x=mc2._x
coord.y=mc2._y
this.localToGlobal(coord);
mc1.hitTest(coord.x, coord.y, false) //кушают около 2600 мс

отсюда делаю вывод что mc1.hitTest(mc2) и проще и практичнее ( вмоем случае разумеется)
:bye:

о битмапном хите я даже и не думал, он тяжелее по определению ( или мне так кажется?)

DarkLight 11.03.2007 23:18

Цитата:

Сообщение от CCCPirate
ну а если клипы в разных координатных сетках?( как в моем случае)
тогда нам приходится еще localToGlobal юзать, который сам посибе жрет около 1600 мс

А вручную посчитать смещение невозможно? Лично мне всегда без localToGlobal удавалось обходиться

CCCPirate 12.03.2007 01:07

Цитата:

Сообщение от DarkLight
А вручную посчитать смещение невозможно? Лично мне всегда без localToGlobal удавалось обходиться

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

relevance4 12.03.2007 14:21

пользуй хиттест от bitmapData. он быстрее

firelord 13.03.2007 12:11

откровенно говоря, я лично результатами автора сильно удивлен! по идее, hitTest(,,true) должна выполняться на ПОРЯДОК дольше hitTest(,,false) - если я правильно понимаю, в последнем варианте сравнение идет просто по координатам (несколько арифметических функций), а в первом - проверяется наложение ВСЕХ элементов клипа.

или это происходит по-другому? может быть флеш кэширует векторные ролики в битмапах - и проверяет только наличие точки в маске? тогда по-идее скорость c bitmapData должна быть сравнима...

etc 13.03.2007 13:09

Firelord, прочитайте в хелпе, за что отвечает третий параметр и когда он необходим.

CCCPirate 14.03.2007 01:17

Цитата:

Сообщение от relevance4
пользуй хиттест от bitmapData. он быстрее

No stretching, rotation, or other transformation of either object is considered when doing the hit test.

по этой причине он не подходит


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

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