PDA

Просмотр полной версии : Перемещение нарисованных линий.


NixMist
29.12.2013, 18:43
Есть массив точек и массив линий, точки уже заданы на сцене, имена point_1, point_2 и т.д. Возможно ли как то сделать так, чтобы при перетаскивании на сцене точек линии следовали за ними. Вот код рисования линий.
public function stage_mouseUpHandler(event:MouseEvent):void
{
var circle:DisplayObject = event.target as DisplayObject;


var index:int = _points.indexOf(circle);//если индекс больше -1, то значит мы кликнули по точке



if ( (! _isDraw) && (circle is Point_1) )
{
_currentObjects = [];
_currentObjects.push(_points[index]);
stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler);
}
if ( (_isDraw) && (circle is Point_2) && !(circle is Point_1) )
{
_currentObjects[1].graphics.clear();
_currentObjects[1].graphics.lineStyle(2, 0x86AA28);
_currentObjects[1].graphics.moveTo(_currentObjects[0].x, _currentObjects[0].y);
_currentObjects[1].graphics.lineTo(circle.x, circle.y);
_lines[_lines.length] = _currentObjects[1];
_currentObjects.length = 0;
_isDraw = false;
this.removeMouseMove();

}
if (index == -1 && _isDraw)
{

this.removeLine(_currentObjects[1]);
_currentObjects.length = 0;
_isDraw = false;
this.removeMouseMove();
}
}
public function removeMouseMove():void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler);

}


public function stage_mouseMoveHandler(event:MouseEvent):void
{
if (_currentObjects.length > 1)
{
this.removeLine(_currentObjects[1]);
}
_isDraw = true;
var line:Sprite = new Sprite();
line.graphics.lineStyle(2, 0x86AA28);
line.graphics.moveTo(_currentObjects[0].x, _currentObjects[0].y);
line.graphics.lineTo(mouseX, mouseY);
line.mouseChildren = false;
line.mouseEnabled = false;
addChild(line);
_currentObjects[1] = line;


}



public function removeLine(line:Sprite):void
{
var index:int = this.getChildIndex(line);
if (index) removeChildAt(index);
}


}

}

Я так понимаю с помощью ENTER_FRAME сделать это не получится, т.к. имён у линий нету? Или я ошибаюсь?

Isfet
29.12.2013, 19:08
должен быть класс точки, и класс линии, точка должна знать к каким линиям она относится( хранить массив линий)), линия должна хранить ссылки на две точки(начала и конца), у класса линии есть метод - update(), когда точка перемещается она вызывает у всех линий из своего массива метод - update(),а линии перерисовываются по ссылкам на 2 точки(начала и конца).

NixMist
29.12.2013, 20:15
про класс линии можно по подробней? Желательно с кодом чтобы я разобрался в нём.

Isfet
29.12.2013, 20:26
что-то типо этого


package {
import flash.geom.Point;

public class Line extends Shape {
//ссылки на точки начала и конца
private var _startPoint:CustomPoint;
private var _endPoint:CustomPoint;

public function Line(start:CustomPoint,end:CustomPoint){
_startPoint = start;
_endPoint = end;
update();

}
public function update() {
// перерисовка линии вызывается при каждом изменении координат
// точек начала или конца
graphics.clear();
graphics.lineStyle(1,0);
graphics.moveTo(_startPoint.x,_startPoint.y);
graphics.lineTo(_endPoint.x,_endPoint.y);

}


}
}



класс точки примерно такой


package {
import flash.display.Sprite;
import flash.geom.Point;

public class CustomPoint extends Sprite {
// массив линий, которые относятся к точке
private var _lines:Array = [];

public function CustomPoint(){



}
public function pushLine(line:Line) {
_lines.push(line);
}
public function redrawLines() {
var arrLen:uint = _lines.length;
for (var i:int = 0; i < arrLen; i++) {
_lines[i].update();
}
}

}
}



Добавлено через 8 минут
исправил, пардон, на коленке пишу)

NixMist
30.12.2013, 11:41
спасибо) вроде разобрался, попробую в действии.

Добавлено через 3 часа 14 минут
Вроде делаю всё по инструкции, но файл не использует другие классы кроме главного, возможно надо что-то в настройках изменить не подскажете?

Akopalipsis
30.12.2013, 15:11
NixMist со вчерашнего дня у меня в голове, что то щёлкало, когда я думал об этой теме. И только сейчас понял, что у Вас не получится так, как посоветовали. Автор немного ошибся,
в таком виде код работать не будет. В классе линии, точки не обновляются.

Добавлено через 2 минуты
И ещё ошибка с наследованием точек от Shape, они не будут на мышь реагировать.

Isfet
30.12.2013, 15:26
Вроде делаю всё по инструкции, но файл не использует другие классы кроме главного, возможно надо что-то в настройках изменить не подскажете?

поподробнее пожалуйста, какой файл? что не использует?

NixMist
30.12.2013, 15:36
Akopalipsis, а как сделать чтобы они обновлялись?
Isfet, ну у меня есть основной файл Main.fla и он исполняет только основной класс Main.as, а остальные классы он не исполняет, все классы находятся в одной папке с fla и не понимаю почему они не работают.

Isfet
30.12.2013, 15:46
ну нужно создать экземпляры этих классов


var startPoint:CustomPoint = new CustomPoint();
startPoint.x = 10;
startPoint.y = 20;
addChild(startPoint);

var endPoint:CustomPoint = new CustomPoint();
endPoint.x = 100;
endPoint.y = 200;
addChild(endPoint);

var line:Line = new Line(startPoint,endPoint);
addChildAt(line,0);


и скопируйте заного классы из 4 поста, я их немного допилил

samana
30.12.2013, 15:48
Если у вас линий не очень много, то почему бы просто не перерисовать их всех, без создания лишних классов?

Akopalipsis
30.12.2013, 16:30
поподробнее пожалуйста, какой файл? что не использует?
Класс Line при инициализации получает поинты и сохраняет их в свойства класса.
Потом Вы вызываете метод update и он всегда рисует одну и туже линию, так как поинты не обновляются.
Создавать каждый раз классы линий по новой и удалять из массива прежние, ресурсоемко.
Если у вас линий не очень много, то почему бы просто не перерисовать их всех, без создания лишних классов?
Мне тоже кажется этот вариант лучшим.

TWETTI
30.12.2013, 16:40
Как то так. Если точек будет много то надо оптимизировать циклы или использовать классы.
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Main extends MovieClip
{
private var _draggedPoint:MyPoint;//MyPoint это класс точки, указанный в библиотеке.

public function Main()
{
redrawLines();

addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
}

private function redrawLines():void
{
graphics.clear();
graphics.lineStyle(8, 0x000000, 0.4);

var numOfPoints:int = numChildren;
for (var i:int = 1; i <= numOfPoints; i++)
{

for (var j:int = 1; j <= numOfPoints; j++)
{
graphics.moveTo(this["point_" + i].x, this["point_" + i].y);
graphics.lineTo(this["point_" + j].x, this["point_" + j].y);
}
}
}

private function mouseDown(event:MouseEvent):void
{
if (event.target is MyPoint)
{
_draggedPoint = event.target as MyPoint
_draggedPoint.startDrag();

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
}

private function mouseMove(event:MouseEvent):void
{
redrawLines();

event.updateAfterEvent();
}

private function mouseUp(event:MouseEvent):void
{
if (_draggedPoint)
{
_draggedPoint.stopDrag();
_draggedPoint = null;

stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
}
}
}
PointLine.swf

Isfet
30.12.2013, 16:56
Если у вас линий не очень много, то почему бы просто не перерисовать их всех, без создания лишних классов?
ТС не сказал что ему именно нужно, мы вот и гадаем) способ конечно самый простой, но подходит только при рисовке непрерывной линии, если там есть разрывы, придется уже что-то еще думать.

Добавлено через 9 минут

Создавать каждый раз классы линий по новой и удалять из массива прежние, ресурсоемко.

у меня тоже когда-то была такая болезнь, я думал что любое вычисление - очень ресурсоемко, и старался оптимизировать оптимизации всех оптимизаций, чтобы комп с моим приложением летал, но поверьте, это не то на что нужно заострять внимание) компу все равно , если конечно кодить без фанатизма. А притом что создание линии - разовая операция, то это абсолютно не ресурсоемко, и удаление ее - тоже абсолютно не ресурсоемко, представьте себе 3D стрелялку, и представьте сколько там операций вычисляется за доли секунды, а тут всего лишь на всего добавляется / удаляется линия. Это болезнь, ее надо лечить)


Потом Вы вызываете метод update и он всегда рисует одну и туже линию, так как поинты не обновляются.


все обновляется - это ссылки)

Akopalipsis
30.12.2013, 17:27
все обновляется - это ссылки)
Точно:)

NixMist
02.01.2014, 17:36
Как то так. Если точек будет много то надо оптимизировать циклы или использовать классы.
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;

public class Main extends MovieClip
{
private var _draggedPoint:MyPoint;//MyPoint это класс точки, указанный в библиотеке.

public function Main()
{
redrawLines();

addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
}

private function redrawLines():void
{
graphics.clear();
graphics.lineStyle(8, 0x000000, 0.4);

var numOfPoints:int = numChildren;
for (var i:int = 1; i <= numOfPoints; i++)
{

for (var j:int = 1; j <= numOfPoints; j++)
{
graphics.moveTo(this["point_" + i].x, this["point_" + i].y);
graphics.lineTo(this["point_" + j].x, this["point_" + j].y);
}
}
}

private function mouseDown(event:MouseEvent):void
{
if (event.target is MyPoint)
{
_draggedPoint = event.target as MyPoint
_draggedPoint.startDrag();

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
}

private function mouseMove(event:MouseEvent):void
{
redrawLines();

event.updateAfterEvent();
}

private function mouseUp(event:MouseEvent):void
{
if (_draggedPoint)
{
_draggedPoint.stopDrag();
_draggedPoint = null;

stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
}
}
}
PointLine.swf

Ок спасибо, а как быть если например точек два класса, например Point_1 и Point_2?

Akopalipsis
02.01.2014, 21:54
В прошлый раз я Вам осмелился посоветовать прочитать книжку, на которую ушло бы две недели.
Прошел уже месяц и Вы всё так же спрашиваете то, на что есть ответ в первой половине книге.

TWETTI
02.01.2014, 22:51
Ок спасибо, а как быть если например точек два класса, например Point_1 и Point_2?
Замените в коде MyPoint на MovieClip.

NixMist
02.01.2014, 23:27
В прошлый раз я Вам осмелился посоветовать прочитать книжку, на которую ушло бы две недели.
Прошел уже месяц и Вы всё так же спрашиваете то, на что есть ответ в первой половине книге.
Я её читаю на данный момент, и возможно и вправду ответ там есть, но применяя его у меня ничего не получается.
TWETTI, ну я примерно так и пробовал, и попробовал вновь, но ничего не выходит. А в главном классе нужно что-то указывать?

TWETTI
03.01.2014, 00:28
Я её читаю на данный момент, и возможно и вправду ответ там есть, но применяя его у меня ничего не получается.
TWETTI, ну я примерно так и пробовал, и попробовал вновь, но ничего не выходит. А в главном классе нужно что-то указывать?

Так я и говорю, в главном классе замените все слова MyPoint на MovieClip.

NixMist
03.01.2014, 13:27
Всё сделал как надо, извиняюсь за тупости, но снова столкнулся с проблемой, вылетает ошибка сталкиваюсь с ней впервые, что она может обозначать, раньше небыло.

ReferenceError: Error #1069: Не удалось найти свойство point_1 в Main_2; отсутствует значение по умолчанию.
at Main_2/redrawLines()
at Main_2()

Akopalipsis
03.01.2014, 13:47
Посмотрите сами - Ошибки компилятора (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/compilerErrors.html).

TWETTI
03.01.2014, 15:35
Всё сделал как надо, извиняюсь за тупости, но снова столкнулся с проблемой, вылетает ошибка сталкиваюсь с ней впервые, что она может обозначать, раньше небыло.

ReferenceError: Error #1069: Не удалось найти свойство point_1 в Main_2; отсутствует значение по умолчанию.
at Main_2/redrawLines()
at Main_2()

У вас на сцене нет объекта с именем point_1.

NixMist
03.01.2014, 16:37
Посмотрите сами - Ошибки компилятора (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/compilerErrors.html).

смотрел и выход не нашёл.

У вас на сцене нет объекта с именем point_1.

Есть объект этот.

var point_1:Point_1 = new Point_1();
point_1.x = fig_1.x;
point_1.y = fig_1.y + 34;
addChild(point_1);

at Main_2/redrawLines()
at Main_2()
ругается на redrawLines() насколько я понял

Akopalipsis
03.01.2014, 16:56
смотрел и выход не нашёл.
По этой ссылке не говорят, как решить проблему, там лишь подсказывают, что не так.
И мне кажется, что ошибка может быть из-за не понимания Вами классов. Сколько у Вас экземпляров класса
Main, который сделал TWETTI ?

NixMist
03.01.2014, 17:21
Я не создавал новый класс, я просто вписал функции и переменную в свой класс Main_2.

TWETTI
03.01.2014, 17:25
Покажите весь ваш код с fla файлом.

NixMist
03.01.2014, 17:29
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Point;
import flash.events.Event;
import flash.display.MovieClip;



public class Main_2 extends Sprite
{
public var _points:Array;//массив с точками
public var _lines:Array;//массив с линиями
public var _currentObjects:Array;//массив в котором находятся обьекты с которыми работаем в данный момент
public var _isDraw:Boolean;//флаг указывающий в каком состаянии ( рисуем, не рисуем )
private var _draggedPoint:MovieClip;





public function Main_2()
{
_points = [];//создаем массивы
_lines = [];


//var _draggedPoint:MovieClip;//MyPoint это класс точки, указанный в библиотеке.


var fig_1:Fig_1 = new Fig_1();
fig_1.x = 250;
fig_1.y = 60;
addChild(fig_1);

var fig_2:Fig_2 = new Fig_2();
fig_2.x = 250;
fig_2.y = 150;
addChild(fig_2);

var fig_3:Fig_3 = new Fig_3();
fig_3.x = 250;
fig_3.y = 250;
addChild(fig_3);

var fig_4:Fig_4 = new Fig_4();
fig_4.x = 250 - 143;
fig_4.y = 350;
addChild(fig_4);

var fig_5:Fig_5 = new Fig_5();
fig_5.x = 250 + 143;
fig_5.y = 350;
addChild(fig_5);

var fig_6:Fig_6 = new Fig_6();
fig_6.x = 250;
fig_6.y = 450;
addChild(fig_6);

var fig_7:Fig_7 = new Fig_7();
fig_7.x = 250;
fig_7.y = 560;
addChild(fig_7);


var point_1:Point_1 = new Point_1();
point_1.x = fig_1.x;
point_1.y = fig_1.y + 34;
addChild(point_1);

var point_2:Point_2 = new Point_2();
point_2.x = fig_2.x;
point_2.y = fig_2.y - 30;
addChild(point_2);

var point_3:Point_1 = new Point_1();
point_3.x = fig_2.x;
point_3.y = fig_2.y + 30;
addChild(point_3);

var point_4:Point_2 = new Point_2();
point_4.x = fig_3.x;
point_4.y = fig_3.y - 40;
addChild(point_4);

var point_5:Point_1 = new Point_1();
point_5.x = fig_3.x + 143;
point_5.y = fig_3.y + 40;
addChild(point_5);

var point_6:Point_1 = new Point_1();
point_6.x = fig_3.x - 143;
point_6.y = fig_3.y + 40;
addChild(point_6);

var point_7:Point_2 = new Point_2();
point_7.x = fig_4.x;
point_7.y = fig_4.y - 20;
addChild(point_7);

var point_8:Point_2 = new Point_2();
point_8.x = fig_5.x;
point_8.y = fig_5.y - 20;
addChild(point_8);

var point_9:Point_1 = new Point_1();
point_9.x = fig_4.x;
point_9.y = fig_4.y + 20;
addChild(point_9);

var point_10:Point_1 = new Point_1();
point_10.x = fig_5.x;
point_10.y = fig_5.y + 20;
addChild(point_10);

var point_11:Point_2 = new Point_2();
point_11.x = fig_6.x;
point_11.y = fig_6.y - 30;
addChild(point_11);

var point_12:Point_1 = new Point_1();
point_12.x = fig_6.x;
point_12.y = fig_6.y + 30;
addChild(point_12);

var point_13:Point_2 = new Point_2();
point_13.x = fig_7.x;
point_13.y = fig_7.y - 34;
addChild(point_13);

_points.push(point_1, point_2, point_3, point_4, point_5, point_6, point_7, point_8, point_9, point_10, point_11, point_12, point_13);//помещаем эти точки в массив


fig_2.addEventListener(MouseEvent.MOUSE_DOWN, ClickToDrag_1);
fig_2.addEventListener(MouseEvent.MOUSE_UP, ReleaseToDrop_1);
fig_3.addEventListener(MouseEvent.MOUSE_DOWN, ClickToDrag_2);
fig_3.addEventListener(MouseEvent.MOUSE_UP, ReleaseToDrop_2);
fig_4.addEventListener(MouseEvent.MOUSE_DOWN, ClickToDrag_3);
fig_4.addEventListener(MouseEvent.MOUSE_UP, ReleaseToDrop_3);
fig_5.addEventListener(MouseEvent.MOUSE_DOWN, ClickToDrag_4);
fig_5.addEventListener(MouseEvent.MOUSE_UP, ReleaseToDrop_4);
fig_6.addEventListener(MouseEvent.MOUSE_DOWN, ClickToDrag_5);
fig_6.addEventListener(MouseEvent.MOUSE_UP, ReleaseToDrop_5);

function ClickToDrag_1(event:MouseEvent):void
{
fig_2.startDrag();
addEventListener(Event.ENTER_FRAME, enterFrame_1);
}
function ReleaseToDrop_1(event:MouseEvent):void
{
fig_2.stopDrag();
removeEventListener(Event.ENTER_FRAME,enterFrame_1);
}
function enterFrame_1(e:Event):void
{
point_2.x = fig_2.x;
point_2.y = fig_2.y - 30;
point_3.x = fig_2.x;
point_3.y = fig_2.y + 30;
}


function ClickToDrag_2(event:MouseEvent):void
{
fig_3.startDrag();
addEventListener(Event.ENTER_FRAME, enterFrame_2);
}
function ReleaseToDrop_2(event:MouseEvent):void
{
fig_3.stopDrag();
removeEventListener(Event.ENTER_FRAME,enterFrame_2);
}
function enterFrame_2(e:Event):void
{
point_4.x = fig_3.x;
point_4.y = fig_3.y - 40;
point_5.x = fig_3.x + 143;
point_5.y = fig_3.y + 40;
point_6.x = fig_3.x - 143;
point_6.y = fig_3.y + 40;

}


function ClickToDrag_3(event:MouseEvent):void
{
fig_4.startDrag();
addEventListener(Event.ENTER_FRAME, enterFrame_3);
}
function ReleaseToDrop_3(event:MouseEvent):void
{
fig_4.stopDrag();
removeEventListener(Event.ENTER_FRAME,enterFrame_3);
}
function enterFrame_3(e:Event):void
{
point_7.x = fig_4.x;
point_7.y = fig_4.y - 20;
point_9.x = fig_4.x;
point_9.y = fig_4.y + 20;
}

function ClickToDrag_4(event:MouseEvent):void
{
fig_5.startDrag();
addEventListener(Event.ENTER_FRAME, enterFrame_4);
}
function ReleaseToDrop_4(event:MouseEvent):void
{
fig_5.stopDrag();
removeEventListener(Event.ENTER_FRAME,enterFrame_4);
}
function enterFrame_4(e:Event):void
{
point_8.x = fig_5.x;
point_8.y = fig_5.y - 20;
point_10.x = fig_5.x;
point_10.y = fig_5.y + 20;
}

function ClickToDrag_5(event:MouseEvent):void
{
fig_6.startDrag();
addEventListener(Event.ENTER_FRAME, enterFrame_5);
}
function ReleaseToDrop_5(event:MouseEvent):void
{
fig_6.stopDrag();
removeEventListener(Event.ENTER_FRAME,enterFrame_5);
}
function enterFrame_5(e:Event):void
{
point_11.x = fig_6.x;
point_11.y = fig_6.y - 30;
point_12.x = fig_6.x;
point_12.y = fig_6.y + 30;
}


redrawLines();

addEventListener(MouseEvent.MOUSE_DOWN, mouse_Down);

stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler);

}




public function stage_mouseUpHandler(event:MouseEvent):void
{
var circle:DisplayObject = event.target as DisplayObject;


var index:int = _points.indexOf(circle);//если индекс больше -1, то значит мы кликнули по точке



if ( (! _isDraw) && (circle is Point_1) )
{
_currentObjects = [];
_currentObjects.push(_points[index]);
stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler);
}
if ( (_isDraw) && (circle is Point_2) && !(circle is Point_1) )
{
_currentObjects[1].graphics.clear();
_currentObjects[1].graphics.lineStyle(2, 0x86AA28);
_currentObjects[1].graphics.moveTo(_currentObjects[0].x, _currentObjects[0].y);
_currentObjects[1].graphics.lineTo(circle.x, circle.y);
_lines[_lines.length] = _currentObjects[1];
_currentObjects.length = 0;
_isDraw = false;
this.removeMouseMove();

}
if (index == -1 && _isDraw)
{

this.removeLine(_currentObjects[1]);
_currentObjects.length = 0;
_isDraw = false;
this.removeMouseMove();

}
}
public function removeMouseMove():void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler);

}


public function stage_mouseMoveHandler(event:MouseEvent):void
{
if (_currentObjects.length > 1)
{
this.removeLine(_currentObjects[1]);
}
_isDraw = true;
var line:Sprite = new Sprite();
line.graphics.lineStyle(2, 0x86AA28);
line.graphics.moveTo(_currentObjects[0].x, _currentObjects[0].y);
line.graphics.lineTo(mouseX, mouseY);
line.mouseChildren = false;
line.mouseEnabled = false;
addChild(line);
_currentObjects[1] = line;



}
public function removeLine(line:Sprite):void
{
var index:int = this.getChildIndex(line);
if (index) removeChildAt(index);

}
private function redrawLines():void
{

graphics.clear();
graphics.lineStyle(8, 0x000000, 0.4);

var numOfPoints:int = numChildren;
for (var i:int = 1; i <= numOfPoints; i++)
{

for (var j:int = 1; j <= numOfPoints; j++)
{
graphics.moveTo(this["point_" + i].x, this["point_" + i].y);
graphics.lineTo(this["point_" + j].x, this["point_" + j].y);
}
}
}

public function mouse_Down(event:MouseEvent):void
{
if (event.target is MovieClip)
{
_draggedPoint = event.target as MovieClip
_draggedPoint.startDrag();

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
}

public function mouseMove(event:MouseEvent):void
{
redrawLines();

event.updateAfterEvent();
}

public function mouseUp(event:MouseEvent):void
{
if (_draggedPoint)
{
_draggedPoint.stopDrag();
_draggedPoint = null;

stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUp);
}
}

}

}

Класс Main_2 - главный.
fla не знаю как цепануть, но там созданы экземпляры Point_1 и Point_2, и различные fig.

TWETTI
03.01.2014, 17:33
Переменные point_1, point_2, ... объвленные в конструкторе Main_2 не будут видны в других методах. Но вы их добавляете в массив _points. Поэтому вам надо в методе redrawLines пройтись по всем элементам массива _points и нарисовать линии. В моем коде, я прохожусь по всем мувиклипам находящимся на сцене во Flash редакторе.

NixMist
03.01.2014, 17:45
Понятно. Получается выйдет обширный код, если я ничего не путаю, придётся пройти по каждому элементу массива в отдельности?

TWETTI
03.01.2014, 17:54
Вот так:
var numOfPoints:int = _points.length;
for (var i:int = 0; i < numOfPoints; i++)
{
for (var j:int = 0; j < numOfPoints; j++)
{
graphics.moveTo(_points[i].x, _points[i].y);
graphics.lineTo(_points[j].x, _points[j].y);
}
}

NixMist
03.01.2014, 18:25
Так ок, а как сделать чтобы нарисованные мною линии также перерисовывались?