![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Хм. Интересная фигня. У меня еще такое вылезло — если заключить ваш код в 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,883
Записей в блоге: 7
|
Цитата:
Это обычный хиттест Потом раскомментируй строчку с hitTestNew для битмпавского хиттеста и сравни загрузку процессора. |
|
|||||
|
Человек и Здание
|
Занятно...
Даже не знаю, что сказать... Буду нюхать...
__________________
Регардсы. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|