Форум Flasher.ru

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

Zebestov 11.07.2015 02:47

Смена изображения при смене ориентации
 
Парни!
А не знает ли кто как заставить AIR красиво менять изображение при смене ориентации. Ну чтобы как в любом даже самом зачуханом нативном приложении — фейдом менялось от того, что было, к тому, что будет. Бо меня как законченного перфекциониста бесит это скачкообразное убожество, которое происходит на экране.
Если что, речь идет о нативном дисплейлисте.

Astraport 11.07.2015 09:24

ORIENTATION_CHANGING event не пробовал?

Zebestov 11.07.2015 11:49

Все пробовал. Дело не в этом. В самом AIR криво реализовали. У тебя нет контроля в процессе проворачивания — так бы сам что-то намутил.

Попробовал через черный экран, но есть один глюк, который заставляет отказаться. Дело в том, что у меня получается повернуть мой девайс так, что он кидает CHANGING и CHANGE, но еще не поворачивает экран (не кидает RESIZE). Так вот в этом промежуточном положении с черным экраном девайс может оказаться лежа на столе, например.

Фигня это все.

AlexCooper 11.07.2015 16:59

Где-то был на просторах фикс. Он основывался на том, что нативное событие прерывалось, и по факту, сама ориентация не менялась, а только отслеживалась

Добавлено через 8 минут
Да и предлагалось два метода отслеживания. Первый получать события и прерывать их, второе основывалось на гироскопе и отключенной автоориентацией.

Добавлено через 12 минут
Нашел в тестах кусочек кода
Код AS3:

stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE,orientationChangeListener);
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGING, orientationChangeListener);
 
protected function orientationChangeListener(event:StageOrientationEvent = null):void
                {                               
                        //event.stopImmediatePropagation();
 
                        if (config.unset) {
 
                                event.preventDefault();
                                return;
                        }
 
                        while(numChildren) removeChildAt(0);
 
                        if (!event) event = new StageOrientationEvent(StageOrientation.DEFAULT);
 
                        switch(event.afterOrientation)
                        {        case StageOrientation.DEFAULT:
                                case StageOrientation.UNKNOWN:
                                case StageOrientation.UPSIDE_DOWN:
                                        gui = new gui_pageHomeV();
                                        /*gui.width = 800;
                                        gui.height = 1024;
                                        /*gui.width = stage.fullScreenWidth;
                                        gui.height = stage.fullScreenHeight;*/

                                break;
                                default:
 
                                        gui = new gui_pageHomeH();
                                /*        gui.width =1024 ;
                                        gui.height = 800;*/

 
                                break;
                        }
                        gui.width = stage.fullScreenHeight;
                        gui.height = stage.fullScreenWidth;
                        addChild( gui );
                        if(event)
                        addLog('type '+event.type+' before '+event.beforeOrientation+' after '+event.afterOrientation);
 
                        addLog('FW: '+FW+' FH: '+FH+" "+stage.width+"x"+stage.height);
 
 
                }


Zebestov 11.07.2015 18:38

Это прекрасно работает, если хочется менять координатную сетку совсем уж врукопашную.
Я же не хочу отказываться от того, что система координат "флипнулась". Мне лишь не нравится анимация.

У меня же ситуаций решилась и вовсе без этих всех премудростей. Зачем мне вообще пользователя слушать? Все проще: портретная фотка — портретная ориентация, альбомная — соответственно! Меняем ориентацию на свое усмотрение с помощью stage.setOrientation() и никаких тебе промежуточных положений, отловов событий. Все красиво, плавно ушли в ЗТМ, повернули (как и положено топорно, по-AIRовски), плавно вышли из ЗТМ — лепота!

AlexCooper 11.07.2015 18:51

Вообще конечно Вам решение подходит)

Zebestov 11.07.2015 18:52

Совершенно верно, случай индивидуальный, так что пронесло )

caseyryan 11.07.2015 19:35

Вадим, что за приложуху мутишь? Игру?

Zebestov 11.07.2015 20:07

Не, такой себе редактор фотографий простенький ;)


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

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