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

Вернуться   Форум Flasher.ru > Flasher.ru > Новости и события

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Adobe AIR 3.9 Beta - теперь с workers для Android!

С мобильными не дописал в заголовке.
Правда пока только под Андроид и с ограничениями.
Ну и вроде как уменьшено время компиляции под iOS, сейчас буду проверять. И разное по мелочи.

Скачать Adobe AIR 3.9 Beta
__________________
In Code We Trust


Последний раз редактировалось alexcon314; 09.09.2013 в 12:17.
Старый 07.09.2013, 22:10
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 2  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Круто, но даже не знаю, стоит ли переводить async-функционал с ANE на Flash...на iOS вряд ли так же быстро у Adobe получится ввести поддержку мультипоточности, особннно в представлении FlashPlayer-а(где каждый Worker, по сути, является еще одной флешкой). Да и скорость нативного кода повыше будет(у меня там правка и разбор HTML, довольно мучительный процесс). Вот это еще заинтересовало:
Цитата:
Mobile Support for Background Execution in “Direct” Render Mode – AIR now supports background execution of code on iOS and Android when render mode is set to “direct”. This will allow your applications to perform tasks such as audio playback even when invisible to the user. Due to power and CPU considerations, we recommend reviewing our release notes for additional details and guidance.
Возможно, я что-то делал не так, но под iOS приходилось специально выставлять
Код AS3:
SoundMixer.audioPlaybackMode = AudioPlaybackMode.AMBIENT;
чтобы на фоне не играла музыка из игры(останавливать звуки было невозможно в силу убогости API менеджера звуков, который не было времени переписывать) Возможно, имеется в виду, что теперь это документированная фича, работающая и под Andorid...
P.S.
Дочитал release notes, понял в чем соль - Starling у меня останавливался при событии DEACTIVATE, вызовов отрисовки OpenGL на фоне не происходило, и все работало...А теперь при попытке вызова практически любого метода API Stage3D в фоне будет генерироватся ошибка с кодом 3768.
P.P.S Упс, перепутал, это для отключения звуков при блокировке экрана было нужно...


Последний раз редактировалось C4Grey; 07.09.2013 в 22:34.
Старый 08.09.2013, 00:56
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 3  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
C4Grey, ничего не понял. Я тоже таким методом пользуюсь чтобы звук не играл на iOS. А что не так?

Мне вот интересно. Самые проблемные места в одном приложении когда отрисовывается битмапдата. Это иногда, если фотка большая, по 5-10 секунд длится и девайс все это время не реагирует ни на что. Можно ли для ускорения такого процесса как-то использовать workers?
Ну понятно, что прелоадер вероятно теперь анимированный можно запустить, а вот как-то сам процесс можно оптимизировать?
__________________
In Code We Trust

Старый 08.09.2013, 16:51
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 4  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Цитата:
Сообщение от Astraport Посмотреть сообщение
C4Grey, ничего не понял. Я тоже таким методом пользуюсь чтобы звук не играл на iOS. А что не так?
Да это я не так понял, оказывается, под iOS, если в фоне приложение будет работать с OpenGL, система его закроет. Теперь вместо внезапного закрытия при попытке вызова отрисовки в фоне(или любого другого метода Stage3D) получим ошибку. Но так как при работе с Stage3D всегда останавливал отрисовку при деактивации приложения, то и не был осведомлен об этой особенности
Цитата:
Сообщение от Astraport Посмотреть сообщение
Можно ли для ускорения такого процесса как-то использовать workers?
Ускорить можно работу каких-то алгоритмов, используя Crossbridge(собрать библиотеку, и работать с ней в другом потоке). Если тормозит сам плеер(внутренний метод отрисовки), то с этим ничего не поделать, наверное, только работать в другом потоке. Но все равно, это приятная и нужная фича

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Если говорить конкретнее, то вот самая обыденная задача - выбрать из галереи устройства фотку и отобразить на сцене. Если это ретина устройства, то фотки бывают по 3-4 Мб весят и все замерзает на несколько секунд. Вот можно здесь приспособить воркеры чтобы быстрее процесс происходил?


Код AS3:
var tempBD:BitmapData = (LoaderInfo(e.target).content as Bitmap).bitmapData;
panelClass.setBitmapData(tempBD);
 
 
//panelClass
public function setBitmapData(source:BitmapData):void
{
var s:Number = Math.min(tW / source.width, tH / source.height);
s = Math.min(1, s);
 
bitmapData = new BitmapData(source.width * s, source.height * s, false, 0x0);
bitmapData.draw(source, new Matrix(s, 0, 0, s), null, null, null, true);
 
var drawImage:Image = new Image(Texture.fromBitmapData(bitmapData));
addChildAt(drawImage,0);
}
И подобных процессов у меня не мало.
__________________
In Code We Trust

Старый 09.09.2013, 09:01
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 6  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
По оптимизациям:
1. copyPixels, если не ошибаюсь, быстрее draw.
2. Texture.fromBitmapData - по-моему, это синхронная операция, в отличии от загрузки ATF, где можна указать async-callback(догадываюсь, там используется нечто вроде PBO, но не могу понять, почему Adobe не используют его же и для несжатых данных). Но в галерее устройства фотки вряд ли хранятся в ATF, так что этот вариант отпадает .
Была одна идея - ATF вроде как может быть контейнером для обычного RGBA:
Цитата:
Well, you may want to use uncompressed textures but still want to leverage cubemap, automatic mipmap support or even texture streaming.
И вот можно бы попробовать создавать во время работы ATF-контейнер с нашей BitmapData прямо в AS, и загружать его в видеопамять асинхронно. Но тут будет порядочный перерасход памяти на дублирование данных в ATF(хоть и временный), да и непонятно, быстрее ли это будет
P.S.
Проверил:
Код AS3:
public function Encode(AQuantization:int = 100):void
{
	var vEncoder:JPEGXREncoderOptions = new JPEGXREncoderOptions(AQuantization);
	var vBytes:ByteArray = new ByteArray();
	var vStart:uint = getTimer();
	FTest.bitmapData.encode(FTest.bitmapData.rect, vEncoder, vBytes);
	Cc.logch(this, 'Complete in ' + uint(getTimer() - vStart) + ' ms');
}
На PC с i3 это занимает около 450-500 мс для текстуры 4302x1080(первое, что под руку подвернулось), с минимальным уровнем сжатия, так что для мобильных не вариант(да и на РС не особо чем-то поможет, разве что для каких-то редакторов уровней можно конвертор приделать).


Последний раз редактировалось C4Grey; 09.09.2013 в 09:31.
Старый 09.09.2013, 11:28
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 7  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
C4Grey, спасибо что потратил время на тестирование и разбор моей проблемы.

copyPixels быстрее, но там у меня скалирование до нужных размеров (чтобы UI поместилось и лишнюю память не жрало). Поэтому draw.
__________________
In Code We Trust

Старый 09.09.2013, 12:07
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 8  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Сказать по честному, с айр на "вы", тем более с новейшими фичами типа воркеров..но все же, стало интересно.
Невозможно вынести код, содержащий BitmapData#draw() и трансформации в код воркера? А по комплиту в основном потоке забирать картинку?

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

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Ну вот что-то такое я и хочу, но не знаю как.
Вообще примеров использования workers для as3 пока очень мало. А для работы с графикой нашел всего один.
__________________
In Code We Trust

Старый 09.09.2013, 12:31
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 10  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Ну, а что смущает? Вроде все по делу в примере
Правда, вторая флешка (где воркеры работают) как-то не очень себя ведет адекватно порой, было так что область отрисовки почернела и восстановилась потом..
Но можно попробовать другие способы запуска кода в врокере, через ембедд-swf, к примеру. Хотя, сдается мне, что узким местом тут являются каналы и шаред-свойства.

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

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

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


 


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


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