![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2010
Сообщений: 282
|
Всем привет,
Есть код который вытаскивает из библиотеки копии мувика MC и рандомом размещает их на сцене соединяя линиями. Мувики можно таскать мышкой. Как мне отследить пересечение линий которыми соеденены эти мувики? import flash.geom.Rectangle; var vsego_muvikov:Number = 4; //Количество окружностей/линий var lines:Sprite = new Sprite(); this.addEventListener(MouseEvent.MOUSE_MOVE, drawLine); for (var i:uint = 0; i < vsego_muvikov; i++) { var muvik:MC = new MC(); this.addChild(muvik); muvik.buttonMode = true; muvik.name = "muvik" + i; muvik.x=50+Math.random() * 300; muvik.y=50+Math.random() * 200; trace (muvik.name+"x= "+muvik.x+", y= "+muvik.y); muvik.addEventListener(MouseEvent.MOUSE_DOWN, muvik_mouseDown); muvik.addEventListener(MouseEvent.MOUSE_UP, muvik_mouseUp); } function muvik_mouseDown(event:MouseEvent){ event.target.startDrag(false,new Rectangle(50,50,500,300)); } function muvik_mouseUp(event:MouseEvent){ event.target.stopDrag(); } function drawLine(event:MouseEvent):void { lines.graphics.clear(); //Очищаем поле от нарисованых линий lines.graphics.lineStyle(1, 0x000000); for (var i:uint = 0; i < vsego_muvikov; i++) { var dispObjCurr:DisplayObject = this.getChildByName("muvik" + i); var dispObjNext:DisplayObject = this.getChildByName("muvik" + (i+1)); if (i == (vsego_muvikov-1)) dispObjNext = this.getChildByName("muvik0"); lines.graphics.moveTo(dispObjCurr.x, dispObjCurr.y); lines.graphics.lineTo(dispObjNext.x, dispObjNext.y); this.addChild(lines); //Отрисовывае линии //this.addChildAt(lines,0); //Помещаем линии на самый низ } } |
|
|||||
|
Регистрация: Dec 2009
Сообщений: 125
|
|
|
|||||
|
c c++ я уже переводил.
http://www.murmadillo.tut.su/html/li...Intersect.html Сначала определеяется могут ли линии пересекаться, а потом если могут и если надо ищется точка пересечения.
__________________
Гоночка |
|
|||||
|
Регистрация: Aug 2010
Сообщений: 282
|
Мне нужен именно факт пересечения, координаты точки пересечения не важны.
Но как я писал ранее получается, что линии уже изначально пересекаются (см. рис слева) поэтому по HitTest не знаю как отследить. Может что посоветуете? Alex Lexcuk наверное это то, что надо, но не могу разобраться как применить это к моему коду - я недавно AS 3.0 изучать начал еще нифига не знаю как это все использовать. |
|
|||||
|
Цитата:
1. По точкам получаем 2 уравнения для 2-х прямых в канонической форме: Ax + By + C = 0; 2. Подставляем 2 точки от одного отрезка в уравнение прямой другого отрезка. Если результаты Ax + By + C имеют разные знаки - значит точки лежат по разную сторону прямой 3. Проделываем это сравнение для других 2-х точкек и второго уравнения прямой - если тоже разные знаки - значит есть пересечение. Цитата:
"Боюсь нам нужно использовать... Математику." |
|
|||||
|
Modus ponens
|
Цитата:
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:20. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| пересечение объектов |
| Опции темы | |
| Опции просмотра | |
|
|