Рисование квадрата AS3
Рисование квадрата AS3
Подскажите пожалуйста как организовать рисование геометрических фигур(в данном случае квадрата)при помощи мыши в своем приложении? Я полагаю что для этого нужна функция DrawRect но проблема в том что там требуется 4 параметра, координаты верхнего левого угла(этот параметр можно привязать к координатам мыши) и ширина с высотой( вот здесь и кроется проблема)! Как сделать так что бы ширина и высота менялась в зависимости от того куда я перемещу мышь с зажатой левой кнопкой?
Re: Рисование квадрата AS3
Событие MOUSE_DOWN - сохраняешь начальные координаты прямоугольника (координаты мыши).
Событие MOUSE_UP - рисуешь прямоугольник. Ширина и длина определяются вычитанием начальных координат из текущих.
Часть кода:
Код: Выделить всё
x_start = mouseX;
y_start = mouseY;
Часть кода:
Код: Выделить всё
drawRect(x_start, y_start, mouseX-x_start, mouseY-y_start);
Re: Рисование квадрата AS3
В том то и дело что он ругается на не числовые значенияmouseX-x_start, mouseY-y_start
Re: Рисование квадрата AS3
Как и на что ругается? Всё должно работать. Напиши здесь полный код, который у тебя не работает.
Re: Рисование квадрата AS3
Я по разному пробовал! в данный момент код выглядит так:
Код: Выделить всё
private function RectangleTool(e:MouseEvent):void {
quitActiveTool();
active="Rect";
board.addEventListener(MouseEvent.MOUSE_DOWN, startRectangle);
board.addEventListener(MouseEvent.MOUSE_UP, stopRectangle);
board.cursor.visible = true;
board.cursor_txt.visible = false;
highlightTool(Rect);
hideTools(eraser, txt);
}
private function startRectangle(e:MouseEvent):void {
var drawRect = new Shape();
board.addChild(drawRect);
drawRect.graphics.moveTo(mouseX, mouseY);
drawRect.graphics.beginFill(FillActiveColor);
drawRect.graphics.lineStyle(shapeSize.width, LineActiveColor);
board.addEventListener(MouseEvent.MOUSE_MOVE, drawPencilTool);
}
private function drawRectangle(e:MouseEvent):void {
drawRect.graphics.drawRect(x_start, y_start, mouseX-x_start, mouseY-y_start);
}
private function stopRectangle(e:MouseEvent):void {
board.removeEventListener(MouseEvent.MOUSE_MOVE, drawRectangle);
}
Rect.addEventListener(MouseEvent.MOUSE_UP, RectangleTool);
Re: Рисование квадрата AS3
Не понял я твой алгоритм...
Если нужно просто нарисовать прямоугольник, как было написано в первом сообщении, то всё гораздо проще.
Если нужно просто нарисовать прямоугольник, как было написано в первом сообщении, то всё гораздо проще.
Код: Выделить всё
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseReleasedHandler);
var x_start;
var y_start;
function mouseDownHandler(e:MouseEvent):void {
x_start = mouseX;
y_start = mouseY;
}
function mouseReleasedHandler(e:MouseEvent):void {
graphics.beginFill(0x36638E);
graphics.drawRect(x_start, y_start, mouseX-x_start, mouseY-y_start);
graphics.endFill();
}