![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Подскажите, как просчитать hitTest двух таких клипов, не по рамке а по контуру. Форма может быть любая (блин).
|
|
|||||
|
Регистрация: Dec 2001
Адрес: Latvia, Riga
Сообщений: 94
|
da hitTest i tak eta delajet bez njekakih ulovok:
Цитата:
|
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Цитата:
Оказывается, это тебе надо читать хелп. Где явно написано, что предложенное тобой myMovieClip.hitTest(target), - Evaluates THE BOUNDING BOXES (выделено мной) of the target and specified instance, and returns true if they overlap or intersect at any point. И попробуй-ка сделать вот такой примерчик, используя myMovieClip.hitTest(target) Сомневаюсь, что у тебя получится " bez njekakih ulovok ".
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Регистрация: Dec 2001
Адрес: Latvia, Riga
Сообщений: 94
|
nu da vot sdelal, bez njekakih ulovok, toka nje target a _x, _y, shape flag
ogovorilsja, sore, no ulovok njekakih njenada! k tomuzhe eta napisana v helpe ! |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Не-е-ет, примерчик-то твой хилый. И абсолютно не равнозначен тому, что я выложил. Сразу видно, что он сделан с hitTest(x, y, shapeFlag). А это использование подходит только для довольно маленьких объектов, размерами которых можно пренебречь, а брать только координаты их центров. Поэтому в твоем примере, как это видно на картинке, шар может почти полностью лежать на фигуре, но hitTest регистрироваться не будет.
Но, я это все тебе говорю не для того, чтобы как-то поглумиться над тобой, а только для того, чтобы ты не пытался относиться к вопросам других с пренебрежением и высокомерием. Не надо так резко отправлять других к хелпу. Не надо таких комментариев "lame lame". Даже ты, зная английский, делаешь такие ошибки. А что говорить о тех, кто не знает английского? Вот форум для того и существует, чтобы одни могли задавать любые вопросы, а другие - делиться опытом и маленькими хитростями. Извини, если обидел. Но и ты постарайся не обижать других.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Регистрация: Dec 2001
Адрес: Latvia, Riga
Сообщений: 94
|
nu ladno, uprjok k mestu vspeshke upustil
a kak tebe etat fail? no vopsheto ja etim njeanilasja do etava, kakbi njebilo nadabnastji, no njemnoshko prishlosj podumatj... a ja vedj tebja zadel za zhivoje vsjotaki, izvinjajusj ![]() no tvojo reshenije chisto bilo na mnoga huzhe a nje alternativnij variant. Последний раз редактировалось Zirgz; 20.02.2003 в 23:56. |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Вот ты приаттачиваешь файл, а ты сам его проверил? Мне кажется, - нет. Я даже уверен, что нет. Потому что у тебя startDrag без "true", и поэтому ты не можешь нормально двигать клип. А если бы проверил, то обнаружил бы то, что можно увидеть на приатаченных картинках.
Но то, что ты обратился к getBounds, говорит, что ты на правильном пути. Но, опять-таки, всегда стоит подумать, подходит ли данный способ для решения данной задачи. И вот тут можно ответить и на твое утверждение, что предложенный тобой способ (в другом топике) – намного лучше моего. Во-первых, я предложил только ОДИН из способов, специально оговорив это в самом начале. Во-вторых, для каждой задачи – свой способ. Я до сих пор думаю, что тот, который я предложил – более универсальный: он позволяет более гибко подойти к удалению копий клипов. Например, если я хочу удалить клипы только тогда, когда их количество четно какому-то числу, или если я хочу удалить какую-то определенную конфигурацию клипов. В общем, я хочу еще раз повторить: для каждой задачи – свой способ. Хорош ли предложенный тобой? – безусловно! Для своих задач. Но зацепило меня за живое не то, чей предложенный способ лучше или хуже, а твое ничем необоснованное высокомерие и слово "lame", трижды повторенное. Я, по жизни – добрейшей души человек, но, сталкиваясь с хамством и грубостью, становлюсь сам не свой. Даже друзья это хорошо усвоили и не пытаются меня в таких случаях успокаивать, а просто, сразу вызывают скорую помощь для пострадавшего. Шучу, конечно. Но в каждой шутке - .... Поэтому так и отнесся к твоим постам. Хотя против тебя лично нечего не имею. Я отлично помню, что мы с тобой нормально общались, когда тестили твой austrapak. Надеюсь, и в дальнейшем будем общаться нормально. В нашей полемике мы забыли про автора вопроса, Nicolas(a). Давай – все же – ответим ему. Nicolas, смотря какую задачу ты решаешь. Если это достаточно большие объекты, и нужно точно отследить их столкновение, - есть еще один нетривиальный способ: разместить по контуру одного из них точечные клипы-маяки, и отслеживать столкновение с ними.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Здравствуйте, Sergwizard
Спасибо за Вашу защиту от нападок нашего "лесного брата". За время развития событий я сумел сам справиться с поставленной задачей. Ваш совет по поводу "клипов-маяков", приходил мне в голову, но объектов очень много и в каждый вставлять "маяки", очень трудоемкий процесс. Задача решилась очень интересным способом: 1. При загрузке МС в "container" мы прощитываем "shape", с шагом 2 пикселя, и заносим объекты со свойствами (х и у) в массив для данного МС. container = ссылка на нужный контейнер.
clipBounds = МС.getBounds(container);
masName = (_level0[container._name+"_ht"]=[]);
for (j=clipBounds.xMin;j<=clipBounds.xMax;j+=2) {
for (k=clipBounds.yMin;k<=clipBounds.yMax;k+=2) {
if (МС.hitTest(container._x+j,container._y+k,true)) {
masName.push({x:j,y:k})
}
}
}
2. При совпадении "bounding box" двух МС, мы включаем проверку совпадений их шейпов (по их массивам, до первого совпадения) var HTmass = eval(container1+"_ht")
var HTUrl = eval(container1+".МС")
for (m=0;m<=HTmass.length-1;m++) {
var loc = HTUrl.localToGlobal(HTmass[m])
if (container2.hitTest(loc.x,loc.y,true)) {
// В момент совпадения выполняем что захотим.
break;
}
}
Всем спасибо. Последний раз редактировалось Nikolas; 21.02.2003 в 19:25. |
|
|||||
|
Все свободны
![]()
__________________
Two beer or not two beer?... |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
теперь-то суслика видят все =)
|
![]() |
Часовой пояс GMT +4, время: 15:42. |
|
|
« Предыдущая тема | Следующая тема » |
|
|