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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.02.2011, 12:25
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 11  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
посмотрите аттач, вы так хотите ?

может в сторону курвы ?
Вложения
Тип файла: zip smoothdraw.zip (54.5 Кб, 21 просмотров)
__________________
мира и гармонии


Последний раз редактировалось 3p.station; 09.02.2011 в 12:37.
Старый 09.02.2011, 13:04
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 12  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от 3p.station Посмотреть сообщение
посмотрите аттач, вы так хотите ?
может в сторону курвы ?
3p.station, вы бы давали лучше ссылки на источник, тем более, что там принцип объясняется.
http://www.flashandmath.com/advanced/smoothdraw/
К тому же, до этой либы появилась эта, с более богатыми возможностями: http://en.nicoptere.net/?p=476
Принцип у них похож, но реализация разная.

Старый 09.02.2011, 13:37
3p.station вне форума Посмотреть профиль Отправить личное сообщение для 3p.station Найти все сообщения от 3p.station
  № 13  
Ответить с цитированием
3p.station
 
Аватар для 3p.station

блогер
Регистрация: Oct 2009
Адрес: кочевник. Киев
Сообщений: 453
Записей в блоге: 5
да, я понимаю - просто не смог найти ) :
__________________
мира и гармонии

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

Регистрация: Apr 2010
Сообщений: 82
Крестиком обозначены положения курсора.
Изображения
 

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Если кисть с точками - это отдельный контейнер, то может его поворачивать на новое положение мышки, а затем перемещать самого. Но сам курсор двигается довольно быстро, и гладкого поворота не получился, может если рисование сделать через интервал какой нибудь.
Этот код поворачивает кисть на мышку и перемещается на её положение, в общем ничего нового....:
Код AS3:
var dx:Number = mouseX - brush.x ;
var dy:Number = mouseY - brush.y;
var ang:Number = Math.atan2(dy, dx);
brush.rotation = ang * (180 / Math.PI);
 
brush.x = mouseX;
brush.y = mouseY;

Старый 09.02.2011, 14:29
evgen4ik вне форума Посмотреть профиль Отправить личное сообщение для evgen4ik Найти все сообщения от evgen4ik
  № 16  
Ответить с цитированием
evgen4ik

Регистрация: Apr 2010
Сообщений: 82
3p.station, не совсем. У меня вот так!

Старый 09.02.2011, 14:31
evgen4ik вне форума Посмотреть профиль Отправить личное сообщение для evgen4ik Найти все сообщения от evgen4ik
  № 17  
Ответить с цитированием
evgen4ik

Регистрация: Apr 2010
Сообщений: 82
..........
Вложения
Тип файла: rar brush.rar (7.8 Кб, 14 просмотров)

Старый 09.02.2011, 19:05
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 18  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Дык у того, что на рисунке минусы будут забавные, вот нарисуйте лесенку) Ну чо, обещал код - вот.
Мэйн и собсно рисовалка, два таки класса, в один некочепыжно всяко %)
Код AS3:
package 
{
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.TimerEvent;
	import flash.geom.Point;
	import flash.text.TextField;
	import flash.utils.*;
 
	/**
	 * ...
	 * @author De
	 */
	public class Main extends Sprite 
	{
		public var s:Sprite = new Sprite();
		public var tb:TehBrush = new TehBrush();
		public var mdown:Boolean = false;
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			addChild(s);
			tb.addPoint(new Point(0, 0));//точки, из которых состоит кисть
			tb.addPoint(new Point(10, 10));
			tb.addPoint(new Point(-10, 10));
			tb.addPoint(new Point(10, -10));
			tb.addPoint(new Point(-10, -10));
			stage.addEventListener(MouseEvent.MOUSE_DOWN, doDown);
			stage.addEventListener(MouseEvent.MOUSE_UP, doUp);
			stage.addEventListener(MouseEvent.MOUSE_MOVE, doMove);
		}
		private function doMove(ev:MouseEvent):void {
			if (mdown) {
				s.graphics.clear();
				s.graphics.lineStyle(0);
				tb.addPathPos(mouseX, mouseY);
				tb.drawPath(s);
			}
		}
		private function doDown(ev:MouseEvent):void {
			mdown = true;
		}
		private function doUp(ev:MouseEvent):void {
			mdown = false;
		}
	}
}
Рисовалка:
Код AS3:
package  {
	import flash.display.Sprite;
	import flash.geom.Matrix;
	import flash.geom.Point;
	/**
	 * ...
	 * @author De
	 */
	public class TehBrush
	{
		private var points:Vector.<Point> = new Vector.<Point>();
		private var path:Vector.<Point> = new Vector.<Point>();
		//private var m:Matrix = new Matrix();
		public function TehBrush() {
 
		}
		public function addPoint(p:Point):void {
			points.push(p);
		}
		public function addPathPos(mx:Number, my:Number):void {
			path.push(new Point(mx, my));
		}
		public function drawPath(s:Sprite):void {
			for (var j:int = 0; j < points.length; ++j) {
					var p:Point = points[j];
			for (var i:int = 0; i < path.length - 1; ++i) {
				var v:Point = path[i+1].subtract(path[i]);
				var vLength:Number = v.length;
				var sin:Number = v.y / vLength;
				var cos:Number = v.x / vLength;
 
					var posX:Number = path[i+1].x + p.x * cos + p.y * sin;
					var posY:Number = path[i + 1].y + p.y * cos - p.x * sin;//МЕГОВРОЩЕНИЕ
					if (i == 0) {
						s.graphics.moveTo(path[0].x + p.x * cos + p.y * sin, path[0].y + p.y * cos - p.x * sin);
					}
					s.graphics.lineTo(posX, posY);
					//trace(posX, posY);
				}
			}
		}
	}
 
}
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 09.02.2011, 20:04
evgen4ik вне форума Посмотреть профиль Отправить личное сообщение для evgen4ik Найти все сообщения от evgen4ik
  № 19  
Ответить с цитированием
evgen4ik

Регистрация: Apr 2010
Сообщений: 82
-De-, не мог бы ты чуть прокомментировать суть собственно метода. я плохо разбираюсь в чужом коде((

Старый 10.02.2011, 00:43
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 20  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
evgen4ik, чукча не читатель? %)
Ну как на картинке работает. Если оно вместо того, чтоб повернуть вниз, повернуло бы вверх, то случилось бы пересечение траектории с отрисовываемой линией, например)
Ну попробую рассказать про drawPath функцию, собсно делает чо надо. Есть там векторы (если пугает слово вектор, то считать, что это массив просто) points и path в которых сидят точки. path - это путь мыши. points - точки кисти. var v:Point - куда направлен очередной отрезок пути мыши, считаем синус и косинус угла этого отрезка (который он образует с осью Ох). Дальше считаем очередную позицию точки, в которую переместилась точка кисти (posX, posY). Это координаты конца очередного отрезка пути мыши, плюс точка кисти, повернутая на тот же угол, на который повернут этот наш отрезок пути мыши. Ну и первую точку ставим так же, как и остальные, только вместо координат конца отрезка мыши используем координаты начала (это тот дурной if, найди 10 отличий от posX, posY).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

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

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

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


 


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


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