![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Feb 2011
Сообщений: 117
|
вопрос :
У нас есть Фигура нарисованна на экране (круг) и есть прямая тоже нарисованная на экране. почему среда считает что круг касается прямой когда на самом деле нифига не касается ? вот работающий код для наглядности package { import flash.events.* ; import flash.display.* ; public class example extends Sprite { public var circle : Sprite = new Sprite ( ) ; public var line : Shape = new Shape ( ) ; public function example ( ) { circle.graphics.lineStyle(1,0xff0000) ; circle.graphics.beginFill(0xff0000); circle.graphics.drawCircle(500,250,20) ; addChild(circle) ; circle.addEventListener(MouseEvent.MOUSE_DOWN,drag) ; circle.addEventListener(MouseEvent.MOUSE_UP ,stopdrag) ; line.graphics.lineStyle(1,0x0000ff) ; line.graphics.moveTo(100,100) ; line.graphics.lineTo(300,300) ; addChild(line) ; trace ("перетащи красный круг на линию пожалуйста" ) ; } public function drag (e: MouseEvent) { circle.startDrag( ) ; } public function stopdrag (e:MouseEvent) { circle.stopDrag( ) ; if (circle.hitTestObject(line)) { trace (" произошло касание" ) ; } else { trace ("касания не произошло" ) ; } } } } Последний раз редактировалось dimarik; 14.04.2011 в 17:43. |
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Код нужно обрамлять тегами AS3.
По поводу вопроса, на самом деле hitTestObject() не расчитывает касание видимых частей фигур, он вычисляет пересечение их ограничивающих прямоугольников (bounding box). Так что прямая может и не касаться круга для человека, но для программы они будут пересекаться. Самый точный метод для расчета столкновений не прямоуголных, позиционированных вертикально объектов - это SAT (Separating Axis Theorem) |
|
|||||
|
Потому что hitTestObject работает не с самой формой объекта, а с прямоугольником, который его окружает (стороны этого прямоугольника всегда параллельны осям координат).
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Feb 2011
Сообщений: 117
|
понял , спасибо
Добавлено через 5 минут интерсно почему тогда касание между Кругами нормально регистрируются |
|
|||||
|
Смотря с какой стороны произошло столкновение:
[IMG]http://i.***********/i5/46/71/1377146/bounds.jpg[/IMG] |
|
|||||
|
Регистрация: Feb 2011
Сообщений: 117
|
да , точно ..
|
![]() |
![]() |
Часовой пояс GMT +4, время: 05:37. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| hitTestObject( ) , границ , граница , границы |
|
|