![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
С мобильными не дописал в заголовке.
Правда пока только под Андроид и с ограничениями. Ну и вроде как уменьшено время компиляции под iOS, сейчас буду проверять. И разное по мелочи. Скачать Adobe AIR 3.9 Beta
__________________
In Code We Trust Последний раз редактировалось alexcon314; 09.09.2013 в 12:17. |
|
|||||
|
Круто, но даже не знаю, стоит ли переводить async-функционал с ANE на Flash...на iOS вряд ли так же быстро у Adobe получится ввести поддержку мультипоточности, особннно в представлении FlashPlayer-а(где каждый Worker, по сути, является еще одной флешкой). Да и скорость нативного кода повыше будет(у меня там правка и разбор HTML, довольно мучительный процесс). Вот это еще заинтересовало:
Цитата:
чтобы на фоне не играла музыка из игры(останавливать звуки было невозможно в силу убогости API менеджера звуков, который не было времени переписывать) Возможно, имеется в виду, что теперь это документированная фича, работающая и под Andorid...P.S. Дочитал release notes, понял в чем соль - Starling у меня останавливался при событии DEACTIVATE, вызовов отрисовки OpenGL на фоне не происходило, и все работало...А теперь при попытке вызова практически любого метода API Stage3D в фоне будет генерироватся ошибка с кодом 3768. P.P.S Упс, перепутал, это для отключения звуков при блокировке экрана было нужно... Последний раз редактировалось C4Grey; 07.09.2013 в 22:34. |
|
|||||
|
C4Grey, ничего не понял. Я тоже таким методом пользуюсь чтобы звук не играл на iOS. А что не так?
Мне вот интересно. Самые проблемные места в одном приложении когда отрисовывается битмапдата. Это иногда, если фотка большая, по 5-10 секунд длится и девайс все это время не реагирует ни на что. Можно ли для ускорения такого процесса как-то использовать workers? Ну понятно, что прелоадер вероятно теперь анимированный можно запустить, а вот как-то сам процесс можно оптимизировать?
__________________
In Code We Trust |
|
|||||
|
Цитата:
![]() Ускорить можно работу каких-то алгоритмов, используя Crossbridge(собрать библиотеку, и работать с ней в другом потоке). Если тормозит сам плеер(внутренний метод отрисовки), то с этим ничего не поделать, наверное, только работать в другом потоке. Но все равно, это приятная и нужная фича ![]() |
|
|||||
|
Если говорить конкретнее, то вот самая обыденная задача - выбрать из галереи устройства фотку и отобразить на сцене. Если это ретина устройства, то фотки бывают по 3-4 Мб весят и все замерзает на несколько секунд. Вот можно здесь приспособить воркеры чтобы быстрее процесс происходил?
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 |
|
|||||
|
По оптимизациям:
1. copyPixels, если не ошибаюсь, быстрее draw. 2. Texture.fromBitmapData - по-моему, это синхронная операция, в отличии от загрузки ATF, где можна указать async-callback(догадываюсь, там используется нечто вроде PBO, но не могу понять, почему Adobe не используют его же и для несжатых данных). Но в галерее устройства фотки вряд ли хранятся в ATF, так что этот вариант отпадает . Была одна идея - ATF вроде как может быть контейнером для обычного RGBA: Цитата:
![]() P.S. Проверил: 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'); } Последний раз редактировалось C4Grey; 09.09.2013 в 09:31. |
|
|||||
|
C4Grey, спасибо что потратил время на тестирование и разбор моей проблемы.
copyPixels быстрее, но там у меня скалирование до нужных размеров (чтобы UI поместилось и лишнюю память не жрало). Поэтому draw.
__________________
In Code We Trust |
|
|||||
|
listener
|
Сказать по честному, с айр на "вы", тем более с новейшими фичами типа воркеров..но все же, стало интересно.
Невозможно вынести код, содержащий BitmapData#draw() и трансформации в код воркера? А по комплиту в основном потоке забирать картинку? |
|
|||||
|
Ну вот что-то такое я и хочу, но не знаю как.
Вообще примеров использования workers для as3 пока очень мало. А для работы с графикой нашел всего один.
__________________
In Code We Trust |
|
|||||
|
listener
|
Ну, а что смущает? Вроде все по делу в примере
![]() Правда, вторая флешка (где воркеры работают) как-то не очень себя ведет адекватно порой, было так что область отрисовки почернела и восстановилась потом.. Но можно попробовать другие способы запуска кода в врокере, через ембедд-swf, к примеру. Хотя, сдается мне, что узким местом тут являются каналы и шаред-свойства. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|