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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Question Отрисовка дисплей объекта в BitmapData

Мне нужно как-то отрисовать объект типа starling.display.Image в BitmapData. Вот метод для отрисовки
Код AS3:
public static function copyToBitmapData(displayObject:DisplayObject, scale:Number = 1.0):BitmapData {
	var bounds:Rectangle = new Rectangle();
	displayObject.getBounds(displayObject, bounds);
	trace(bounds);
	var stage:	Stage			= Starling.current.stage;
	var renderSupport:		RenderSupport 	= new RenderSupport();
 
	renderSupport.clear();
	renderSupport.scaleMatrix(scale, scale);
	renderSupport.setProjectionMatrix(0, 0, stage.stageWidth, stage.stageHeight);
	renderSupport.translateMatrix(-bounds.x, -bounds.y); // move to 0,0
	displayObject.render(renderSupport, 1.0);
	renderSupport.finishQuadBatch();
 
	var outBmp:BitmapData = new BitmapData(bounds.width * scale, bounds.height * scale, true);
	Starling.context.drawToBitmapData(outBmp);
	return outBmp;
}
Но вся фигня в том, что если объект больше размера сцены, то все, что выходит за ее пределы, обрезается.
Пробовал перед отрисовкой менять размеры вьюпорта и сцены на размер моего дисплей объекта, а после восстанавливать. Бестолку. Все так же.
Все равно режется по размеру сцены.
Может кто-нибудь уже решал эту проблему?

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

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Экспериментировал как-то с AGAL и drawToBitmapData, как и при использовании renderToTexture рисуется всё то, что есть на экране, следовательно надо добиться что-бы объект полностью помещался на экран (методом научного тыка), а затем рисовать его в BitmapData.
Цитата:
Пробовал перед отрисовкой менять размеры вьюпорта и сцены на размер моего дисплей объекта
Надо наоборот, объект поскелить под размер вьюпорта.
__________________
Гоночка

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Надо наоборот, объект поскелить под размер вьюпорта.
Нет, это совсем не вариант. Он должен быть именно такого размера, какой есть. Это важно.
А проблема оказалась в том, что это ограничения режима baselineContrained. Надо менять на baselineExtended или baseline. Но тут сразу есть еще одна загвоздка. Дэниэл (главный разработчик старлинга), почему-то решил, что ограничит размер вьюпорта размерами сцены для всех режимов (просто чуваку так захотелось, он именно это в комментарии внутри движка и написал), хотя требуется это только для режима бейслайн констрейнд. Так что без правки кода старлинга и смены режима отрисовки не обойтись

Но я уже подумываю а стоит ли оно того. Мою задачу можно выполнить на чистом флеше, а потом просто готовую битмапу взять и конвертнуть в Image. Скорее всего так завтра и сделаю.

Старый 10.04.2015, 23:57
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 4  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Если мсье желает поизвращаться, можно сделать несколько отрисовок, меняя координаты объекта — скакать иксом и игреком на ширину и высоту экрана потом склеить.
__________________
Поймай яблоко 2!

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Слишком много памяти будет отжирать. Мобилки все-таки)

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

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

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


 


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


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