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

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Ответить
irakezz
Сообщения: 7
Зарегистрирован: 30 ноя 2009, 01:52

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

Сообщение irakezz »

Подскажите пожалуйста как организовать рисование геометрических фигур(в данном случае квадрата)при помощи мыши в своем приложении? Я полагаю что для этого нужна функция DrawRect но проблема в том что там требуется 4 параметра, координаты верхнего левого угла(этот параметр можно привязать к координатам мыши) и ширина с высотой( вот здесь и кроется проблема)! Как сделать так что бы ширина и высота менялась в зависимости от того куда я перемещу мышь с зажатой левой кнопкой?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

Сообщение Александр »

Событие MOUSE_DOWN - сохраняешь начальные координаты прямоугольника (координаты мыши).

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

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

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

drawRect(x_start, y_start, mouseX-x_start, mouseY-y_start);
irakezz
Сообщения: 7
Зарегистрирован: 30 ноя 2009, 01:52

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

Сообщение irakezz »

mouseX-x_start, mouseY-y_start
В том то и дело что он ругается на не числовые значения
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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

Сообщение Александр »

Как и на что ругается? Всё должно работать. Напиши здесь полный код, который у тебя не работает.
irakezz
Сообщения: 7
Зарегистрирован: 30 ноя 2009, 01:52

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

Сообщение 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);
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

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();
}
Ответить