![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2010
Сообщений: 20
|
Беда такая... создаю класс, и из класса "достаю" объекты, размещаю их на сцене...
каждый объект проверяется на столкновение... вроде бы все должно работать нормально (объект удаляется при столкновении), а в результате сносится пол-сцены. Проверяю x и y каждого объекта из массива, получается 0 0 на все. for (var i:uint = 2; i < n; i++) { for (var j:uint = 2; j < m; j++) { var Ex:Ex_Class = new Ex_Class() Ex.addEx(50*i, 50*j) addChild(Ex) Arr.push(Ex) trace (Ex.x, Ex.y) Если проверить каждый элемент массива (Arr[l].x), тоже получаются нули. Последний раз редактировалось Navznich; 11.10.2010 в 02:04. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ну так у Вас и есть (0, 0). При добавлении на сцену у объекта координаты (0, 0). Если хотите другие - надо их задавать. Вы же задаете координаты отрисовки, как я понял. Объект стоит в (0, 0), и в этом объекте отрисован квадрат в координатах (50*i, 50*j). Но объект-то в (0, 0)
![]()
__________________
Reality.getBounds(this); |
|
|||||
for (var i:uint = 2; i < n; i++) { for (var j:uint = 2; j < m; j++) { var Ex:Ex_Class = new Ex_Class() Ex.addEx(50*i, 50*j) Ex.x = 50*i; Ex.y = 50*i; addChild(Ex) Arr.push(Ex) trace (Ex.x, Ex.y) } } вот в этом примере должно все работать как следует |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Только
Ex.y = 50*j; и Ex.addEx(50*i, 50*j) бессмысленно, если (50*i, 50*j) это координаты отрисовки Графиксом. Рисовать надо в (0, 0), а помещать уже в (50*i, 50*j). Собственно поэтому и "сносится полсцены", что все объекты перекрываются, пусть и пустыми пространствами, они все стоят в (0, 0) и хитТестятся друг с другом.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 11.10.2010 в 13:34. |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 20
|
Все равно сносятся
несколько объектов, находящихся рядом с тем, с которым движущийся объект столкнулся,причем вызов удаления - при остановке движения: и объекты, и движущееся тело добавляются прямо на сцену (без контейнера) Последний раз редактировалось Navznich; 14.10.2010 в 01:08. |
|
|||||
|
Сцена - это тоже контейнер.
Всё правильно, hitTestObject срабатывает над всеми перекрываемыми объектами. Чтобы удалить только один объект, или находите ближайший к шарику, или лежащий выше всех в иерархии из тех, с кем сработает hitTestObject. Если ваш шар при проверке на hitTestObject визуально не перекрывает элементы, возможно шар или объекты имеют невидимую область которая срабатывает на перекрытие (aplha=0 и visible=false не мешают hitTestObject) |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 20
|
Невидимых областей нет точно (там на самом деле почти ничего нет, кроме этих несчастных шариков из первого поста), объект перекрывается только один (+ там еще Math.ceil по остановке, и он почти точно в середину попадает)
Последний раз редактировалось Navznich; 14.10.2010 в 03:03. |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 20
|
Решила другой функцией пользоваться - distance
function distance(clipl, clip2) { var dx = clipl.x - clip2.x var dy = clipl.y - clip2.y return (Math.sqrt(dx*dx+dy*dy))} (ну только любопытство все равно осталось - почему с хиттестом не работает) |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|