Страница 1 из 1

Рисование квадрата AS3

Добавлено: 24 дек 2009, 17:51
irakezz
Подскажите пожалуйста как организовать рисование геометрических фигур(в данном случае квадрата)при помощи мыши в своем приложении? Я полагаю что для этого нужна функция DrawRect но проблема в том что там требуется 4 параметра, координаты верхнего левого угла(этот параметр можно привязать к координатам мыши) и ширина с высотой( вот здесь и кроется проблема)! Как сделать так что бы ширина и высота менялась в зависимости от того куда я перемещу мышь с зажатой левой кнопкой?

Re: Рисование квадрата AS3

Добавлено: 24 дек 2009, 23:23
Александр
Событие MOUSE_DOWN - сохраняешь начальные координаты прямоугольника (координаты мыши).

Код: Выделить всё

x_start = mouseX;
y_start = mouseY;
Событие MOUSE_UP - рисуешь прямоугольник. Ширина и длина определяются вычитанием начальных координат из текущих.
Часть кода:

Код: Выделить всё

drawRect(x_start, y_start, mouseX-x_start, mouseY-y_start);

Re: Рисование квадрата AS3

Добавлено: 25 дек 2009, 08:25
irakezz
mouseX-x_start, mouseY-y_start
В том то и дело что он ругается на не числовые значения

Re: Рисование квадрата AS3

Добавлено: 25 дек 2009, 15:15
Александр
Как и на что ругается? Всё должно работать. Напиши здесь полный код, который у тебя не работает.

Re: Рисование квадрата AS3

Добавлено: 25 дек 2009, 15:59
irakezz
Я по разному пробовал! в данный момент код выглядит так:

Код: Выделить всё

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

Добавлено: 25 дек 2009, 17:58
Александр
Не понял я твой алгоритм...
Если нужно просто нарисовать прямоугольник, как было написано в первом сообщении, то всё гораздо проще.

Код: Выделить всё

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();
}