|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Хм. Интересная фигня. У меня еще такое вылезло — если заключить ваш код в onMouseDown:
onMouseDown=function(){ mc.onEnterFrame = function () { // this._rotation = 45; // *1 for (var i=0; i<400; i++) { // *2 this._x += 1; this._y += 1; if (this.hitTest(_root.cross._x, _root.cross._y, true)) { delete this.onEnterFrame; break; } } // *3 } } Вообще, работая с хитТестом лучше менять координаты, которыми тестишь, а не координаты мувика. Я для себя правилом сделал. Типа так: mc.onEnterFrame = function() { this._rotation = 45; // *1 var testx = _root.cross._x; var testy = _root.cross._y; var sx = testx; var sy = testy; for (var i = 0; i<400; i++) { // *2 testx -= 1; testy -= 1; if (this.hitTest(testx, testy, true)) { delete this.onEnterFrame; break; } } // *3 this._x += sx-testx; this._y += sy-testy; trace(this._x); }; |
|
|||||
Человек и Здание
|
Боюсь, придется мне переходить к объектам, "тело" которых строго прямоугольно Переводить координаты в систему коортинат тестируемого объекта, и проверять банально математически попадание в "тело". Очень паршивое ограничение.
Сейчас проверим, как работает в этом случае localToGlobal->globalToLocal Вроде, здесь я косяков не замечал, хотя уже ни в чем не уверен...
__________________
Регардсы. |
|
|||||
Цитата:
Тоесть как бы вообще без глюков и динамично. Правда сравнивается тогда boundingBox, которая не поворачивается, а расширяется. Если нужны повороты, тогда да, математически нужно. Последний раз редактировалось crazyone; 15.07.2008 в 21:11. |
|
|||||
Banned
[+4 01.02.09]
[+1 01.02.09] |
Помните тему Флэш забивает на прорисовку мувиков с координатой > 4005 ?
Третий синтаксис hitTest, по-видимому имеет серьезные ограничения и работает именно на принципе прорисовки мувика битмапой. Поэтому в цикле внутри одного кадра он и не ловит. Наверное внутри одного кадра (одного перехода головки) надо использовать первый синтаксис hitTest. |
|
|||||
Человек и Здание
|
crazyone
Ну если уж потеря формы, т.е. shapeFlag=false, то нафиг он такой нужен hitTest, я и сам четыре проверки написать способен. Тем более, что объект повернут, а flash любит брать ортогональные bounding box (bb), знаем мы его штуки. Тогда и клип-тело не придется делать, он тогда совсем не нужен, достаточно чисел bb. (ну вот, пока я писал, ты сам сообразил насчет поворотов) chingachgoog Очень может быть... было бы только об этом где-то написано... Я два дня рабочего убил, прежде чем заподозрил "не мою ошибку"...
__________________
Регардсы. |
|
|||||
Человек и Здание
|
Раз уж начал жаловаться - а еще меня убивает тормознутость округления в flash... Я чуть не опух, когда выяснил, что примерно 50% вычислительной мощности в моем проекте уходит на округление чисел. Т.е. когда я закомментил округления, время выполнения главного такта программы уменьшилось вдвое, правда, перестало работать корректно
__________________
Регардсы. |
|
|||||
Человек и Здание
|
Это я знаю, но меня интересует округление с нужной точностью, т.е. Math.round(x*pr)/pr
Кроме того, сдвиг работает не так с отрицательными значениями trace (-5.6 >> 0) ===> -5 trace (Math.floor(-5.6)) ===> -6
__________________
Регардсы. |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Цитата:
Это обычный хиттест Потом раскомментируй строчку с hitTestNew для битмпавского хиттеста и сравни загрузку процессора. |
|
|||||
Человек и Здание
|
Занятно...
Даже не знаю, что сказать... Буду нюхать...
__________________
Регардсы. |
Часовой пояс GMT +4, время: 20:02. |
|
« Предыдущая тема | Следующая тема » |
|
|