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

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

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

Регистрация: Jun 2009
Сообщений: 64
По умолчанию Рисование, сохранение, отображение

Подскажите, плз, как человеку, только начинающему разбираться во флеше, как реализовать следующий функционал (что посмотреть, почитать, может, примеры кода):
1) дать возможность пользователю что-нибудь нарисовать (для простоты, например, одним цветом и одной толщиной)
2) сохранить нарисованное в строку
3) отобразить нарисованное из строки

Старый 17.09.2009, 01:28
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 2  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Код AS3:
package {
	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
 
	public class DrawXA extends Sprite
	{
		private var _str:String = '';
 
		public function DrawXA()
		{
			super();
			stage.doubleClickEnabled = true;
			graphics.lineStyle(1,0xFF0000,1);
			stage.addEventListener(MouseEvent.DOUBLE_CLICK,onDoubleClick);
			stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
			stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
 
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
		}
 
		private function onMouseUp(e:MouseEvent):void
		{
			stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);
		}
 
		private function onDoubleClick(e:MouseEvent):void
		{
			if (!_str)
			{
				trace (_arCoor.join('|'));
			}
			else
			{
				var ar:Array = _str.split('|');
				var i:uint = 0;
				var gr:Graphics = graphics;
 
				while (i<ar.length)
				{
					if (ar[i] == -1)
					{
						gr.moveTo(ar[i+1],ar[i+2]);
						i += 3;
					}
					else
					{
						gr.lineTo(ar[i],ar[i+1]);
						i += 2;
					}
				}
			}
		}
 
		private var _arCoor:Array = new Array();
		private function onMouseMove(e:MouseEvent):void
		{
			_arCoor.push(e.stageX,e.stageY);
			graphics.lineTo(e.stageX,e.stageY);
		}
 
		private function onMouseDown(e:MouseEvent):void
		{
			_arCoor.push(-1);
			_arCoor.push(e.stageX,e.stageY);
			graphics.moveTo(e.stageX,e.stageY);
			stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);
		}
	}
}
нажали мышку - рисуем, бросили - бросили рисовать. сделали даблклик - в консоль(trace()) вывели строку, копируем строку, вставляем в код в поле класса _str, запускаем делаем снова даблклик, и как говорится повторение мать учения.

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

Регистрация: Jul 2009
Адрес: Москва
Сообщений: 99
А по поводу сохранения - http://designreviver.com/tutorials/a...es-from-flash/

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

Регистрация: Jun 2009
Сообщений: 64
r_r_f_r, вау! спасибо огромное!
если какие-нить способы сжать данные рисунка? я так понимаю, что мы сохраняем в массив координаты каждой точки, для сложного рисунка строка может быть оооочень длинной

Dimax4d, тот способ, увы, не подходит, т.к. мне надо сохранять данные в строку, а не в jpeg

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

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от LA_ Посмотреть сообщение
я так понимаю, что мы сохраняем в массив координаты каждой точки, для сложного рисунка строка может быть оооочень длинной
Незначительно сжать можно... Но вряд ли вас это сильно спасет.

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

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Писать в бинарном формате. Другого не дано.

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

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Цитата:
если какие-нить способы сжать данные рисунка
используйте ByteArray и его метод compress
Цитата:
Незначительно сжать можно
почему не значительно?
он же координаты хранить собирается, а не пиксели.
да даже если пиксели, они вполне себе хорошо сжимаются
__________________
я могу стать всем, если только захочу


Последний раз редактировалось Felicast; 17.09.2009 в 12:56.
Старый 17.09.2009, 13:06
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 8  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Насколько я понял, нужна строка... Ну можно сжать координаты в половину примерно... Если шаманить, можно %-ов 70 выжать... Но если я правильно понял, заморачиваться автор сильно не хочет... хз... в общем...
Согласен, даже 50% это значительно, но я другое несколько имел ввиду, сорри

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

Теги
отображение , рисование , сохранение
Опции темы
Опции просмотра

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

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


 


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


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