Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   AIR приложение на iPhone восстанавливается на полэкрана (http://www.flasher.ru/forum/showthread.php?t=213797)

mikhailk 18.01.2017 12:36

AIR приложение на iPhone восстанавливается на полэкрана
 
Выглядит так:

1. Приложение работает.
2. Нажимаем кнопку выключения смартфона, получаем черный экран.
3. Нажимаем кнопку Home, приложение восстанавливается, но при этом справа примерно половина обрезана и там черный экран.
4. Лечится так: нажимаем кнопку Home и свертываем приложение, потом нажимаем на иконку приложения - оно восстанавливается на полный экран.

Никто не сталкивался?

mikhailk 24.01.2017 17:46

Уточню, а то всю голову себе сломал уже.

1. Приложение имеет только горизонтальное расположение, что прописано в манифесте:

Код:

        <!-- The aspect ratio of the app ("portrait" or "landscape" or "any"). Optional. Mobile only. Default is the natural orientation of the device -->
        <aspectRatio>landscape</aspectRatio>

        <!-- Whether the app will begin auto-orienting on launch. Optional. Mobile only. Default false -->
        <autoOrients>false</autoOrients>

        <!-- Whether the app launches in full screen. Optional. Mobile only. Default false -->
        <fullScreen>true</fullScreen>

2. Выключаем айфон, включаем, нажимаем хоум - заставка убирается, приложение восстанавливается, но при этом его ширина строго равна высоте экрана. Т.е., показывается левая часть интерфейса:

https://i.gyazo.com/7c473e63b3796e77...faa597b67c.png

Как это вылечить?

Приложение на старлинге, довольно много ресурсов.

alexandrratush 24.01.2017 18:49

Не знаю с чем это связано, но скорее всего событие Resize выдает неправильные размеры экрана, то есть ширину вместо высоты и наоборот. Почему так, я до конца не разобрался. У меня в Android'e была похожая проблема. Добавил такую проверку:
Код AS3:

var aspect:String = this.stage.stageWidth >= this.stage.stageHeight ? StageAspectRatio.LANDSCAPE : StageAspectRatio.PORTRAIT;


ShockWave512 25.01.2017 01:21

вот непомню точно, но вроде была похожая проблема, связка старлинг-физерс постоянно путалась с размером:
в аппе такой код

Код AS3:

private function onResize(e:*):void
{
        // set rectangle dimensions for viewPort:
        var viewPortRectangle:Rectangle = new Rectangle();
        viewPortRectangle.width = stage.stageWidth;
        viewPortRectangle.height = stage.stageHeight;
 
        // resize the viewport:
        starling.viewPort = viewPortRectangle;
 
        starling.stage.stageWidth = stage.stageWidth;
        starling.stage.stageHeight = stage.stageHeight;
}


mikhailk 25.01.2017 14:32

А событие RESIZE какой сцены? Нативной или старлинга?
Что-то у меня не помогло.

ShockWave512 25.01.2017 14:36

нативной

Добавлено через 4 минуты
хмм, только догадки остались, а попробуйте сравнить нативный stage.fullScreenWidth, stage.fullScreenHeight и stage.stageWidth;
stage.stageHeight ?

Смутная еще какая то ассоциация есть с stage.deviceOrientation - может там что то противоположное с шириной/высотой старлинга

старлинг второй?

mikhailk 25.01.2017 14:58

Нет, 1.7


Код AS3:

        private function onResize( e : Event ) : void
        {
            if ( !Starling.current ) return;
 
            DebuggerMobile.traceLog( '[..onResize]', stage.stageWidth, stage.stageHeight, Starling.current.stage.stageWidth, Starling.current.stage.stageHeight );
 
            // set rectangle dimensions for viewPort:
            var viewPortRectangle : Rectangle = new Rectangle();
            viewPortRectangle.width = stage.stageWidth;
            viewPortRectangle.height = stage.stageHeight;
 
            // resize the viewport:
            Starling.current.viewPort = viewPortRectangle;
 
            Starling.current.stage.stageWidth = stage.stageWidth;
            Starling.current.stage.stageHeight = stage.stageHeight;
        }

Выдало после восстановления на полэкрана:

Код:

[..onResize], 640, 1136, 1136, 640
Т.е., действительно стороны перепутаны.
Но дальнейший код ничего не исправил.

ShockWave512 25.01.2017 15:07

ну что придумать еще? попробуйте силовой ресайз, везде где есть подозрения, обязательно в NativeApplication - Event - "activate".

старлинговский контекст восстанавливается после пробуждения? или работает старый?

mikhailk 25.01.2017 15:20

Все совершенно работоспособно.
С учетом того, что видна только часть. ))

Вообще такое ощущение, что изменилось только окошко, через которое видно приложение.
Само оно на том же месте, что и раньше.

Цитата:

связка старлинг-физерс постоянно путалась с размером
Кстати, а если избавиться от физерс - это может помочь или никак не связано?

ShockWave512 25.01.2017 15:26

Если у вас размеры рутового физерс контейнера привязаны к AUTOSIZE_MODE_STAGE, то не думаю что он виноват. Тем более там у вас вроде видно что старлинг не принимает правильный размер натив стейджа.

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

Сейчас похожу по коду старлинга, как он там реагирует на смену ориентации и стейджа.

Может глянуть stage.fullScreenWidth, от них отталкиваться при создании вьюпорта старлинга? У вас апп с системной панелью iOS? или в полный экран?

Добавлено через 16 минут
вот с этими тегами пробовали играть?
Код AS3:

<fullScreen>true</fullScreen>
<autoOrients>true</autoOrients>
<aspectRatio>portrait</aspectRatio>



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

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