Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.04.2006, 19:54
RetSam вне форума Посмотреть профиль Отправить личное сообщение для RetSam Найти все сообщения от RetSam
  № 1  
Ответить с цитированием
RetSam

Регистрация: Apr 2006
Сообщений: 19
По умолчанию Рисование замкнутых фигур

Добрый день!

Как мне сделать такую вещь:

Пользователь щелкает мышкой по полю - ставится точка, далее за мышкой ведется прямая до следующего щелчка, где ставится следующая точка и т.д.

И чтобы если конечная точка = первой, то фигура считалась замкнутой и ее можно было залить цветом.

Если кто-то делал что-то подобное - помогите советом, а то я новичок во флеше.

Старый 23.04.2006, 20:28
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
по клику запоминаем координаты, moveTo/lineTo в эти координаты, если близко к первой точке (<tol) заливаем..
Код:
lineStyle(0);
var tol=20;
var path=[];
function onMouseUp(){
	path.push({x:_xmouse,y:_ymouse});
	if(!started){
		moveTo(_xmouse,_ymouse);
		started=true;
	}else{
		lineTo(_xmouse,_ymouse);
		var dx=_xmouse-path[0].x,dy=_ymouse-path[0].y;
		if(Math.sqrt(dx*dx+dy*dy)<tol){
			clear();
			moveTo(path[path.length-1].x,path[path.length-1].y);
			beginFill(0xFF0000);
			lineStyle(0,0x00FF00);
			for(var i=0;i<path.length;i++)lineTo(path[i].x,path[i].y);
			endFill();
		}
	}
}

Старый 23.04.2006, 20:58
RetSam вне форума Посмотреть профиль Отправить личное сообщение для RetSam Найти все сообщения от RetSam
  № 3  
Ответить с цитированием
RetSam

Регистрация: Apr 2006
Сообщений: 19
Спасибо большое!

А как все-таки добавить, чтобы линия велась после клика, до тех пор пока не будет замкнута?

Старый 23.04.2006, 21:35
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
перерисовать весь массив (по enterFrame например)
Код:
var tol=20;
var path=[];
function onMouseUp(){
	var dx=_xmouse-path[0].x,dy=_ymouse-path[0].y;
	if(Math.sqrt(dx*dx+dy*dy)<tol){
		delete this.onEnterFrame;
		clear();
		moveTo(_xmouse,_ymouse);
		beginFill(0xFF0000);
		lineStyle(0,0x00FF00);
		for(var i=0;i<path.length;i++)lineTo(path[i].x,path[i].y);
		endFill();
	}
	path.push({x:_xmouse,y:_ymouse});
}
function onEnterFrame(){
		clear();
		lineStyle(0);
		moveTo(path[0].x,path[0].y);
		for(var i=1;i<path.length;i++)lineTo(path[i].x,path[i].y);
		if(path.length) lineTo(_xmouse,_ymouse);
}

Старый 23.04.2006, 23:08
RetSam вне форума Посмотреть профиль Отправить личное сообщение для RetSam Найти все сообщения от RetSam
  № 5  
Ответить с цитированием
RetSam

Регистрация: Apr 2006
Сообщений: 19
Еще если можешь подскажи, как теперь доделать чтобы мышка была бы привязана к точкам (сетке) на поле, чтобы ровно можно было рисовать, т.е. мышка как бы скакала по точкам в сетке и при клике рисовала бы линию.

Старый 23.04.2006, 23:27
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
округляй до размеров сетки..
Код:
var tol=20;
var path=[];
var gridStep=10;
function onMouseUp(){
	var dx=_xmouse-path[0].x,dy=_ymouse-path[0].y;
	if(Math.sqrt(dx*dx+dy*dy)<tol){
		delete this.onEnterFrame;
		clear();
		moveTo(_xmouse,_ymouse);
		beginFill(0xFF0000);
		lineStyle(0,0x00FF00);
		for(var i=0;i<path.length;i++)lineTo(path[i].x,path[i].y);
		endFill();
	}
	path.push({x:gridStep*Math.round(_xmouse/gridStep),y:gridStep*Math.round(_ymouse/gridStep)});
}
function onEnterFrame(){
		clear();
		lineStyle(0);
		moveTo(path[0].x,path[0].y);
		for(var i=1;i<path.length;i++)lineTo(path[i].x,path[i].y);
		if(path.length) lineTo(gridStep*Math.round(_xmouse/gridStep),gridStep*Math.round(_ymouse/gridStep));
}
мышкой двигает юзер, заставить ее скакать по сетке нельзя..
можно ее скрыть Mouse.hide(), а двигать вместо нее свой курсор (мувик)..

Старый 24.04.2006, 12:13
motor4ik вне форума Посмотреть профиль Отправить личное сообщение для motor4ik Посетить домашнюю страницу motor4ik Найти все сообщения от motor4ik
  № 7  
Ответить с цитированием
motor4ik
 
Аватар для motor4ik

Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
а я то думал. что - то пером знакомым написано

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:10.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.