Форум 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.

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

relevance4 14.03.2007 12:35

ясно... тогда тот хиттест, в котором указанны координаты - быстрее... на пару операций как минимум (:

nouba 21.03.2007 19:52

пользуй систему тайлов и многомерных масивов и будет тебе счастье...

З.Ы. хитТест годиться только для примеров из хэлпа макромедии. ИМХО

CCCPirate 21.03.2007 22:22

Цитата:

Сообщение от nouba
пользуй систему тайлов и многомерных масивов и будет тебе счастье...

З.Ы. хитТест годиться только для примеров из хэлпа макромедии. ИМХО

Ничего не понял, можно по подробнее?
что есть "система тайлов и многомерных массивов"?

nouba 22.03.2007 11:27

Есть такой человек Nox Noctis...
Хароший такой человек... явно не редиска
Перевёл он очень полезную статью об этом и выложил он её вот сюда

CCCPirate 22.03.2007 18:28

Цитата:

Сообщение от nouba
Есть такой человек Nox Noctis...
Хароший такой человек... явно не редиска
Перевёл он очень полезную статью об этом и выложил он её вот сюда


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

nouba 23.03.2007 11:59

Такая система не может быть медленее хитТеста :))) хоть ты умри...
Если тебе надо проверить на столкновение или пересечение 3! объекта и ты уверен что их будет три, максимум 20, тогда конечно можно обойтись .... но если их будет 200 и тебе будет нужен порядочный фпс а не жалких 10-20 то хитТестик тупо загнется

А сложного ничего в ней нету и она очень проста в реализации


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

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