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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Аналог cacheAsBitmap

Динамически создаю текстуры, текстфильды и т.д. в Stage3D.

Задача: псевдо-фабрика попап-окон
Текущая реализация:

=== Получеловеческим языком ===
- Медиатор отслеживающий события открытия окон, генерит экземпляр попап вьюшки, передавая в него событие( CustomEvent ) с параметрами
- Псевдо-фабрика в зависимости от типа окна(субтип_события), генерит по инструкции, отображения
- Инструкция вида Сгенерировать_Кнопку_С_Текстом
-- Создаем контейнер
-- Генерируем подложку
-- Генерируем текст
-- Атачим всё в контейнер
-- Возвращаем контейнер
- Возвращаемый ДО атачим на сцену

=== Языком AS3 ===
Код AS3:
private function gameOver():void
{	
	var b1:DisplayObject = genButton(0x0,'score '+inject.member.maxlevelnow);	
	var b2:DisplayObject = genButton(0x0,'money '+inject.physicData.nowcash);
		b2.y = b1.height*1.5;
 
	var view:Sprite = new Sprite();
		view.addChild( b1 );	
		view.addChild( b2 );
		view.y -=view.height;
 
	addChild( view );
}
 
private function genButton(color:Number,label:String=''):DisplayObject
{		
	var size:Point = new Point(230,50);
 
	var b:Image = new Image(Texture.fromBitmapData(AssetGUI.getRoundside(color,size.x,size.y), false, false) );
 
	var blabel:TextField = getNewTextfield(label,size.y*.7,0xFFFFFF);
		blabel.width = size.x;
		blabel.touchable = false;
		blabel.y = (size.y-blabel.height)*.5;
 
	var spr:Sprite = new Sprite();	
		spr.addChild( b );
		spr.addChild( blabel );
 
	return spr;
}
 
private function getNewTextfield(txt:String = '', fontSize:uint = 32, color:uint= 0x0):TextField
{
	txt = txt.toLocaleUpperCase();
	var textField:TextField = new TextField(screenWidth, fontSize+8, txt, AssetGUI.FONT_DEFAULT, fontSize, color);
 
		textField.hAlign = HAlign.CENTER;
		textField.vAlign = VAlign.CENTER;
 
	return textField;
}
Проблема: напрягает то, что в итоге я получаю, кучу контейнеров ( в данном случае Sprite ) с кучей вложенных пиктограмм, заливок и текстовых полей.
Желаемая цель: Псевдофабрика GUI где дочерние объекты не перерисовуються
Один из методов: Склеивать bitmapData'ы дочерених ДО, но как быть с импортом текстовых полей и т.д. Слишком муторно мне кажеться

Вопрос 1: Нет ли метода/свойства позволяющее грубо-говоря склеить все дочерние ДО в единое целое? ( на подобие cacheAsBitmap или же рассторизации )
Вопрос 2: Как в данной ситуации поступаете вы? ( Не используя LayoutManager на основе конфигов (xml/json/etc) )
__________________
return this...

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Нет ли метода/свойства позволяющее грубо-говоря склеить все дочерние ДО в единое целое? ( на подобие cacheAsBitmap или же рассторизации )
Есть.
Код AS3:
Sprite#flatten();
п.с.
Цитата:
не перерисовуються
не перерисовываются
Цитата:
рассторизации
растеризации

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
спасибо

p.s. не выспанный и уставший хохол еще не такое напишет)
__________________
return this...

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Про flatten не так давно (вроде тут же) выяснили, что он не срисовывает все в какую-то текстуру, а лишь кэширует матрицы или что-то в этом роде. Ну т.е. там такого профита, как от CacheAsBitmap не будет.
__________________
Поймай яблоко 2!

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
И тем не менее профит есть. У меня в игре много объектов в контейнерах, которые не должны перемещаться. Делаю flatten() и производительность вырастает в разы

Старый 17.07.2015, 17:42
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 6  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
И тем не менее профит есть. У меня в игре много объектов в контейнерах, которые не должны перемещаться. Делаю flatten() и производительность вырастает в разы
Да еще заметил, после flatten(), "рендер" стаёт ручным. Иначе говоря, как можно отключить? ( в процессе, дочерние могут менять позицию, но происходит это раз в 10 секунд как минимум, повторный flatten() решает вопрос, но твинеры стают бесполезными.
__________________
return this...

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
твинеры стают бесполезными
Что мешает рендерить по onUpdate()?

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от illuzor Посмотреть сообщение
Что мешает рендерить по onUpdate()?
я думаю это избыточно
__________________
return this...

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

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

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

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Так не совсем постоянно же:
Цитата:
Сообщение от AlexCooper Посмотреть сообщение
…дочерние могут менять позицию, но происходит это раз в 10 секунд…
__________________
Поймай яблоко 2!

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

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

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


 


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


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