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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.11.2012, 13:34
SpetZ_Naz вне форума Посмотреть профиль Отправить личное сообщение для SpetZ_Naz Найти все сообщения от SpetZ_Naz
  № 21  
Ответить с цитированием
SpetZ_Naz

Регистрация: Aug 2012
Сообщений: 77
Цитата:
billion
...поищите в инете. их там много
Конечно поищу, спасибо.

Цитата:
Wolsh
Вот и попробуйте сами написать код. Это гораздо полезней, чем собирать свою Войну и мир из чужих строчек.
Понял, попробую переписать код по этой методике. Спасибо.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
У меня как-то так получилось. Рисуем и кликаем зеленую штуку.
SimpleDrawHistory.swf   (1.9 Кб)
Вложения
Тип файла: swf SimpleDrawHistory.swf (1.9 Кб, 88 просмотров)
__________________
Reality.getBounds(this);

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

Регистрация: Aug 2012
Сообщений: 77
Цитата:
Wolsh
У меня как-то так получилось. Рисуем и кликаем зеленую штуку.
Переписал я код по Вашим рекомендациям. Все получилось, рисует, координаты запоминает в вектор:
Код AS3:
package
{
	import flash.display.GraphicsPath;
	import flash.display.IGraphicsData;
	import flash.display.Shape;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class PaintBall extends MovieClip
	{
		var path:GraphicsPath = new GraphicsPath(new Vector.<int>(), new Vector.<Number>());
		var drawing:Vector.<IGraphicsData> = new Vector.<IGraphicsData>();
		var child:Shape = new Shape ();
 
		public function PaintBall()
		{	
			doDrawRect();
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMD);
			stage.addEventListener(MouseEvent.MOUSE_UP, onMU);	
		}
 
		public function onMD (e:MouseEvent):void{
			graphics.clear();
			graphics.lineStyle(2, 0x000000, 100, true, "normal", "none");
			drawing.push(path);
			var to_x = e.localX;
			var to_y = e.localY;
			path.moveTo(to_x,to_y);
			stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		public function enterFrameHandler(event:Event):void {
			var m_x:Number = stage.mouseX;
			var m_y:Number = stage.mouseY;
 
			if((m_x>5 && m_x<200) && (m_y>5 && m_y<200)){
				path.lineTo(m_x, m_y);
				path.commands.push(1);
				path.data.push(m_x, m_y);
				graphics.drawGraphicsData(drawing);
			}
		}
		public function onMU(event:MouseEvent):void {
			stage.removeEventListener("enterFrame", enterFrameHandler);
			drawing.splice(0,1);
			path.commands.splice(0,path.commands.length);
			path.data.splice(0,path.data.length);	
		}
 
		public function doDrawRect():void {
			child.graphics.lineStyle(1, 0x000000);
			child.graphics.drawRect(0, 0, 200, 200);
			child.graphics.endFill();
			addChild(child);
		}
	}
}
Единственное не могу понять, как Вы пиксель за пикселем выводите координаты вектора после нажатия на зеленую кнопку.. ? если бы координаты парой можно было забрать с массива как в Point.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну да, я и забираю парой. Сделал счетчик, по ентерфрейму его увеличиваю и забираю координаты и команду.
Код AS3:
		//// счетчик-итератор для воспроизведения
		private var _stepCount:uint; 
		////... слушатель нажатия на кнопку воспроизведения
		private function clickHandler(event:MouseEvent):void 
		{
			//// удаляем холст с рисунком юзера
			super.removeChild(_canvas);
			//// создаем холст для воспроизведения
			_historyCanvas = new Shape(); 
			super.addChild(_historyCanvas);
			_historyCanvas.graphics.lineStyle(2, 0xFFEEEE);
			//// первая отрисовка сохраненного пути целиком за один раз (бледненько)))
			_historyCanvas.graphics.drawPath(_path.commands, _path.data);
			//// установки линии для воспроизведения
			_historyCanvas.graphics.lineStyle(2, 0x226600);
			//// начальное значение счетчика
			_stepCount = 0;
			//// подписка на ентерфрейм для "покадрового" воспроизведения
			super.addEventListener(Event.ENTER_FRAME, restoreHandler);
		}
 
		private function restoreHandler(event:Event):void 
		{
			//// получаем из Пути команды и координаты
			var command:uint = _path.commands[_stepCount];
			var nextX:Number = _path.data[_stepCount * 2];
			var nextY:Number = _path.data[_stepCount * 2 + 1];
			if (command == 1) 
			{
				_historyCanvas.graphics.moveTo(nextX, nextY);
			}
			else 
			{
				_historyCanvas.graphics.lineTo(nextX, nextY);
			}
			//// увеличиваем счетчик
			_stepCount += 1;
			//// если вектор команд "кончился", перестаем слушать ентерфрейм
			if (_stepCount == _path.commands.length)
			{
				super.removeEventListener(Event.ENTER_FRAME, restoreHandler);
			}
		}
__________________
Reality.getBounds(this);

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Можно и сохранение на жесткий диск прикрутить))
SimpleDrawHistory.swf   (4.5 Кб)
Вложения
Тип файла: swf SimpleDrawHistory.swf (4.5 Кб, 73 просмотров)
__________________
Reality.getBounds(this);

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

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

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


 


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


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