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

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

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

Регистрация: Mar 2010
Сообщений: 29
По умолчанию Отрисовка распрашенного графика

Всем привет! Я столкнулся с такой задачей, рисую маршрут в виде однопиксельной линии во флеше, определенного цвета. Хочу потом по этим линиям выдирать точки и восстановить кривую через код. Вытаскиваю все точки,предварительно перегнав в BitmapData. Не могу нормально по порядку считать эти точки,мой глупый мозг не хочет придумывать нормальный алгоритм. Суть примерно такая: начальная точка- допустим черная, ее я нахожу через getPixel. И от нее начинаю идти во все возможные стороны и искать следующий пиксель зеленого цвета. В общем, не получается у меня вытащить правильно точки в верной последовательности) Может кто-нибудь подкинуть идейку, не могу далее сообразить.

Старый 05.03.2014, 22:57
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А зачем вам отрисовывать это в растр? Если вы рисуете линию, то запомните точки, по которым вы её нарисовали и используйте их для последующего редактирования. Если я правильно понял вашу задачу.
---------------------------
А, вы вручную во FlashIDE рисуете линию и хотите потом научиться изменять её с помощью кода, я понял.
---------------------------
Возможно вам поможет readGraphicsData()

Старый 05.03.2014, 23:15
WERt вне форума Посмотреть профиль Отправить личное сообщение для WERt Найти все сообщения от WERt
  № 3  
Ответить с цитированием
WERt

Регистрация: Mar 2010
Сообщений: 29
спасибо за ответ. Мне не то чтоб нарисовать это надо было, надо просто вытащить точки в правильном порядке и потом двигать по этому маршруту объекты

Старый 06.03.2014, 00:18
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Но если вытащить точки из линии, то их получается намного больше, чем было при рисовании.
Этот код, покажет все точки из нарисованной вами линии.
Код AS3:
//line - ваш объект в котором нарисована линия
var v:Vector.<IGraphicsData> = line.graphics.readGraphicsData();
graphics.beginFill(0x0000CC);
for (var i:int = 0; i < v.length; i++) 
{
	if (v[i] is GraphicsPath)
	{
		var gd:Vector.<Number>=(v[i] as GraphicsPath).data
 
		for (var j:int = 0; j < gd.length; j+=2) 
		{
			graphics.drawCircle(gd[j], gd[j + 1], 3);
		}
	}
}

Старый 06.03.2014, 00:30
WERt вне форума Посмотреть профиль Отправить личное сообщение для WERt Найти все сообщения от WERt
  № 5  
Ответить с цитированием
WERt

Регистрация: Mar 2010
Сообщений: 29
Цитата:
Сообщение от samana Посмотреть сообщение
Но если вытащить точки из линии, то их получается намного больше, чем было при рисовании.
Этот код, покажет все точки из нарисованной вами линии.
Код AS3:
//line - ваш объект в котором нарисована линия
var v:Vector.<IGraphicsData> = line.graphics.readGraphicsData();
graphics.beginFill(0x0000CC);
for (var i:int = 0; i < v.length; i++) 
{
	if (v[i] is GraphicsPath)
	{
		var gd:Vector.<Number>=(v[i] as GraphicsPath).data
 
		for (var j:int = 0; j < gd.length; j+=2) 
		{
			graphics.drawCircle(gd[j], gd[j + 1], 3);
		}
	}
}
Почему-то метод readGaphicsData у меня в сдк не существует)
Линия нарисована в битмапе.

Старый 06.03.2014, 01:12
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Это был пример для векторного содержимого и с битмапой конечно не сработает.
Я не помню в какой версии внедрили readGaphicsData, но это было кажется не очень давно. У меня SDK 4.6, и флешплеер 11.9.

Старый 06.03.2014, 02:51
WERt вне форума Посмотреть профиль Отправить личное сообщение для WERt Найти все сообщения от WERt
  № 7  
Ответить с цитированием
WERt

Регистрация: Mar 2010
Сообщений: 29
все,задачу решил, спасибо

Добавлено через 2 минуты
моя теория была практически верна, только потребовалось откинуть лишь все пиксели, которые светлее чем изначальный цвет больше чем искомый цвет/k= в моем случае 1.4)

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

Теги
bitmapdata , flash , getpixel , графики , машруты
Опции темы
Опции просмотра

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

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


 


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


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