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

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

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

Регистрация: Oct 2008
Сообщений: 60
Отправить сообщение для tanyakora с помощью ICQ Отправить сообщение для tanyakora с помощью Skype™
По умолчанию Совместить две BitmapData

Я загружаю картинку с помощью bytearray, добавляю на сцену ее bitmapdata.
Подскажите, пожалуйста, как мне совместить (объединить) следующую загружаемую картинку с уже имеющейся (т.е. чтобы отображались обе)?
Т.к. сейчас происходит наложение одной на другую. Наиболее приближенный вариант получился с помощью merge
Код AS3:
myBit.merge( data, new Rectangle(0, 0, 300, 400), new Point(0, 0), 100, 100, 100, 100);
Но при последующей загрузке картинок видимость предыдущих постепенно затирается.


Последний раз редактировалось dimarik; 14.04.2011 в 13:17.
Старый 14.04.2011, 13:02
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
bytearray не умеет загружать картинки [x]
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Oct 2008
Сообщений: 60
Отправить сообщение для tanyakora с помощью ICQ Отправить сообщение для tanyakora с помощью Skype™
Приведу код для ясности:
Код AS3:
var loader : Loader = new Loader();
var completeLoad :Function = function( in_event : Event ) : void {
 
	var myBitmap : Bitmap = Bitmap( loader.content ); 	
	var data : BitmapData = myBitmap.bitmapData;
 
	myBit.merge( data, new Rectangle(0,0,300,400), new Point(0,0), 100,100,0,0 ); 
 
	var bm:Bitmap = new Bitmap( myBit );
	mSkinOutput.addChild( bm );
}
 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeLoad);
loader.loadBytes( myByteArray );
Т.е. я перевожу картинку в bytearray, и мне нужно bitmapdata этого bytearray совместить с уже отрисованными картинками на сцене.


Последний раз редактировалось dimarik; 14.04.2011 в 13:16.
Старый 14.04.2011, 13:17
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Лучше загрузить картинку через метод load(), а
для совмещения картинок намного лучше подойдет метод copyPixels класса BtimapData с последним параметром mergeAlpha = true

Ну или заюзать JPGDecoder, сконвертить байт массив в BitmapData и уже потом исползовать copyPixels()


Последний раз редактировалось goodguy; 14.04.2011 в 13:22.
Старый 14.04.2011, 13:30
tanyakora вне форума Посмотреть профиль Отправить личное сообщение для tanyakora Найти все сообщения от tanyakora
  № 5  
Ответить с цитированием
tanyakora
 
Аватар для tanyakora

Регистрация: Oct 2008
Сообщений: 60
Отправить сообщение для tanyakora с помощью ICQ Отправить сообщение для tanyakora с помощью Skype™
Попробовала copyPixels
Код:
	var myBitmap : Bitmap = Bitmap( loader.content ); 	
	var data : BitmapData = myBitmap.bitmapData;	
	
	var rect:Rectangle = new Rectangle(0, 0, 300, 400);
	var pt:Point = new Point(0, 0);
				
	myBit.copyPixels(data, rect, pt, data, pt, true);
Все равно получается, что происходит копирование новой картинки без совмещения со старой...

Старый 14.04.2011, 13:37
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Зачем вообще конвертировать картинку в байт массив, чтобы потом опять конвертировать в картинку?
Цитата:
Все равно получается, что происходит копирование новой картинки без совмещения со старой...
Что вы имеете в виду под словом совмещение? Как они должны совместиться? Склеиться в одну?

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

Регистрация: Oct 2008
Сообщений: 60
Отправить сообщение для tanyakora с помощью ICQ Отправить сообщение для tanyakora с помощью Skype™
Я рисую на сцене линию, потом перевожу ее в bytearray. Отправляю полученный массив на сервер, с которого другие флешки получают информацию (посредством сокетов) и должны отобразить на своих экранах нарисованную мной линию. Следующая линия, которую я рисую, должна отображаться у других юзеров вместе с первой. Постоянно полностью отправлять получающийся рисунок считаю нецелесообразно с точки зрения нагрузки на сервер.

Старый 14.04.2011, 13:50
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 8  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
С точки зрения нагрузки на сервер тем более не рационально отправлять линию целиком. Можно отправлять:
- id кисти
- размер кисти
- id цвета
- прозрачность цвета
- начальную точку
- конечную точку

Если точек много, то чтобы не грузить сервер пакетами на каждый MouseMove можно отправлять сразу небольшой массив, если он весь нарисован одной кистью и одним цветом.

Далее, на клиенте проще всего это все рисовать в векторе. а затем через каждые N пакетов отрисовывать это все в BitmapData
__________________
...вселенская грусть

Старый 14.04.2011, 13:53
tanyakora вне форума Посмотреть профиль Отправить личное сообщение для tanyakora Найти все сообщения от tanyakora
  № 9  
Ответить с цитированием
tanyakora
 
Аватар для tanyakora

Регистрация: Oct 2008
Сообщений: 60
Отправить сообщение для tanyakora с помощью ICQ Отправить сообщение для tanyakora с помощью Skype™
Линия может быть совершенно произвольной формы ( формируется по DOWN/UP мыши ), а также с заливкой и т.п.
Поэтому как-то больше склонилась к передаче данных через массив.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Ну заливка - это отдельное действие, так? - ну так его и надо передавать. Вообще, я бы сделал примерно такую систему сообщений на сервер:
- выбрана кисть
- выбран цвет
- начал рисовать в точке (x1, y1)
- ... несколько точек по пути
- закончил рисовать в точке (x2, y2)
- выбрал заливку
- нажал "залить" в таком-то месте

При таком раскладе гораздо проще всем, ибо передается не само состояние, а только его изменение
__________________
...вселенская грусть

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

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

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


 


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


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