ПрограммированиеФорум2D графика и изометрия

Adobe AIR Android Stage3D. После восстановления фокуса на приложении не визуализируется Stage3D

#0
14:47, 1 мар 2017

Есть приложение под Android, разработанное в FlashDevelop AIR Mobile.
Я написал небольшой движок на Stage3D для рендера 2D спрайтов и анимаций.
В приложении есть обработчики событий на потерю фокуса и получение
В приложении есть анимация загрузки на простом MovieClip

stage.addEventListener(Event.DEACTIVATE, deactivate);
stage.addEventListener(Event.ACTIVATE, activate);

Чтобы приложение закрывалось при потере фокуса можно в функции deactivate вставить строчку NativeApplication.nativeApplication.exit();
Хочу, чтобы приложение восстанавливалось после получения фокуса (Например, после звонка во время работы приложения, после блокировки при включенном приложении).

Возникает проблема: при возобновлении фокуса на приложении агрузчик на обычном MovieClip отображается и грузит страницу на Stage3D,
все проходит успешно (все операции в движке на Stage3D), но нет никакой визуализации Stage3D, все пусто, притом можно кликать на невидимые кнопки и все работает, нет только визуализации

Пробовал при деактивации уничтожать все данные и при активации заново инициализировать движок  -  не помогло
Пробовал ставить своийство Stage3D visible = true на всякий случай  -  не помогло

Если кто сталкивался с проблемой или есть мысли в чем может быть проблема, помогите, пожалуйста. В Starling думаю как-то решали эту проблему

#1
16:05, 1 мар 2017

Для восстановления контекста нужно загрузить все текстуры заново. Не занимайтесь изобретением велосипеда, используйте Starling. Там этот момент реализован из коробки.

#2
10:24, 2 мар 2017

На первый взгляд не помогло, но я попробовал на тестовом маленьком проекте, там работает, странно, поищу в чем разница.

Starling я люблю, хорошая вещь. Но для задач попроще в нем много лишнего, можно значительно повысить кпд.
Вот, если интересно, пример от старлинга бенчмарк (я поменял только статичные картинки на анимации, возможно, там что-то можно ускорить) и пример на основе GPUSprite от Adobe
starling
GPUSprite

#3
14:59, 2 мар 2017

Вот чудеса, ошибка появляется если ставить ориентацию landscape

#4
16:21, 2 мар 2017

На всякий то же скомпилировал в IDE air 20, эффект тот же

#5
18:25, 2 мар 2017

geletka
Возможно, это оно

#6
8:05, 3 мар 2017

Кстати интересная статья, проблема действительно есть, надо учесть тоже, но на мобильнике, когда исчез контекст не удалось его воскресить, на компе работает и в портретной ориентации

ПрограммированиеФорум2D графика и изометрия

Тема в архиве.