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

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

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
По умолчанию уменьшить интервал

Начал делать простой растовый графический редактор.

И вот есть такой код, что бы рисовать пиксели:

Код:
private function startDraw(evt:MouseEvent)
{
	//addEventListener(Event.ENTER_FRAME,drawing)
	setInterval(drawing,1);
}

private function drawing(evt:Event=null)
{
	var pX=Math.floor(mouseX);
	var pY=Math.floor(mouseY);
	for(var i=-1;i<=1;i++)
		for(var j=-1;j<=1;j++)
		     primary.bitmapData.setPixel(pX+i,pY+j,curColor);
}
Проблема что интервал очень большой, и поэтому когда я вожу мышь по рабочей области с большой скоростью между пикселями создаётся растояние... Как быть???

Старый 10.11.2008, 17:13
Смольный (Smolniy) вне форума Посмотреть профиль Отправить личное сообщение для Смольный (Smolniy) Посетить домашнюю страницу Смольный (Smolniy) Найти все сообщения от Смольный (Smolniy)
  № 2  
Ответить с цитированием
Смольный (Smolniy)
Человек и Здание
 
Аватар для Смольный (Smolniy)

администратор
Регистрация: Aug 1999
Адрес: Москау-сити, Рассея
Сообщений: 4,671
Отправить сообщение для Смольный (Smolniy) с помощью ICQ
Считать расстояние между старым и новым положением, и если оно больше х, в цикле расставлять там точки от старого положения до нового, с заданной плотностью.
ВыШШий пилотаж - это строить кривую безье из нескольких предыдущих точек измерений, и расставлять новые точки на дорисуемом отрезке не по линии, а по кривой, но это уже скорее всего передоЗ.
__________________
Регардсы.

Старый 10.11.2008, 17:14
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 3  
Ответить с цитированием
gen4
[+4 18.09.08]

Регистрация: May 2006
Сообщений: 79
1. onMouseMove
2. рисовать линию между последней и предпоследней точкой.

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Цитата:
Сообщение от gen4 Посмотреть сообщение
1. onMouseMove
2. рисовать линию между последней и предпоследней точкой.
Я так тоже думал. Но вот в случае с кривой, как найти пунты по которым её построить? Если написать функцию которая заганяет их в массив, то она тоже будет выполнятся с интервалом... Тут нужен цикл покуда мышу не отожмёшь, но вот как его сделать???

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
можно рисовать линию в шейпе, а сам шейп копировать в битмап на каждой итерации
Код AS3:
private function drawing(evt:Event=null):void
{
	var tmp:Shape = new Shape();
	tmp.graphics.lineStyle(3, 0xFF0000);
	tmp.graphics.moveTo(prevX, prevY);
	tmp.graphics.lineTo(mouseX, mouseY);
	prevX = mouseX;
	prevY = mouseY;
	bitmap.bitmapData.draw(tmp);
}

Старый 10.11.2008, 23:01
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 6  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Цитата:
можно рисовать линию в шейпе, а сам шейп копировать в битмап на каждой итерации
Только при быстрых вращениях мыши будут появляться углы. Тут кривые Безье обязательно нужны
__________________
Дело не в тебе

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

Регистрация: Jun 2007
Сообщений: 374
AL.exe, алгоритм, как пририсовать к кривой безье (которая уже нарисована) новую кривую безье (которая ведет к новой точке) и чтобы они были сглажены, не подскажете?
Я голову сломал, но так и не сделал это (

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

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
не совсем в тему, но вариант (в левом примере подергай последнюю точку)

Старый 10.11.2008, 23:50
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 9  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
http://www.dnadillo.dn.ua/fla/bit_to_bezier.zip

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
Спасибо я ещё не совсем разобрался в примере, но это - то что надо

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

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

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


 


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


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