Гибкий мобильный проект — белый экран при вызове pushView

#android #apache-flex #mobile #air #project

#Android #apache-гибкий #Мобильный #воздух #проект

Вопрос:

кто-нибудь может мне помочь? Ну, в моем приложении есть кнопка, и когда вы нажимаете на эту кнопку, это вызывает функцию, в которой есть строка navigator.pushView(); Но, прежде чем загружать второе представление, появляется один белый экран, а затем загружается мое второе представление. Могу ли я удалить этот белый экран?

myFirstView

 <fx:Script>
    <![CDATA[
        import classes.utilis;
        import mx.events.FlexEvent;
        import mx.states.Transition;

        var myTimer:Timer = new Timer(3000);

        private function init(event:FlexEvent):void{
            this.addEventListener(KeyboardEvent.KEY_DOWN, utilis.getInstance().checkKeys);
            this.addEventListener(KeyboardEvent.KEY_UP, utilis.getInstance().checkKeys);
            loading.visible = true;
            myTimer.addEventListener(TimerEvent.TIMER, loginPage);
            myTimer.start();
        }

        private function loginPage(event:TimerEvent):void{
            myTimer.stop();
            myTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, loginPage);
            //VERIFICAR AQUI SE ELE JÁ POSSUI LOGIN ATRIBUIDO E JÁ REDIRECIONAR PARA A ÁREA DO USUÁRIO.
            navigator.pushView(telaLogin);
        }



    ]]>
</fx:Script>

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Image left="-15" right="-15" top="-12" bottom="-4" horizontalCenter="0" scaleMode="stretch"
         smooth="true" smoothingQuality="high" source="assets/someHDImage.png"
         verticalCenter="-4"/>
<!-- para dar uma borda arredondada ao layout-->
<s:Rect id="border" left="0" right="0" top="0" bottom="0" 
        radiusX="10" radiusY="10">

    <s:stroke>
        <s:SolidColorStroke id="borderStroke" color="#696969" weight="2" />
    </s:stroke>
</s:Rect>
<!-- para dar uma borda arredondada ao layout-->
<s:BusyIndicator id="loading" left="130" width="15%" height="10%" horizontalCenter="0"
                 verticalCenter="-34"
                 visible="true"
                 symbolColor="red"
                 />
  

Мой второй вид

 <fx:Script>
    <![CDATA[
        import classes.utilis;

        import mx.events.FlexEvent;
        var tfLoading:TextFormat;


        protected function init(event:FlexEvent):void
        {
            backgroundImage.source="assets/casal-apaixonado-na-praia22.png";
            this.addEventListener(KeyboardEvent.KEY_DOWN, checkKeys);
            this.addEventListener(KeyboardEvent.KEY_UP, checkKeys);
            lblLoading.text = "";
        }
        public function checkKeys(event:KeyboardEvent):void{
            switch(event.keyCode)
            {
                case Keyboard.BACK:
                    event.stopImmediatePropagation();
                    event.preventDefault(); 
                    break;
                case Keyboard.MENU:
                    event.stopImmediatePropagation();
                    event.preventDefault();
                    break;
                case Keyboard.SEARCH:
                    event.stopImmediatePropagation();
                    event.preventDefault();
                    break;
            }
        }
        protected function btnSairClick(event:MouseEvent):void
        {
            //Desenvolver um ALERT para confirmar com o usuário.
            utilis.getInstance().textDialog = "Você tem certeza que deseja sair?";
            utilis.getInstance().retDialog = false;
            utilis.getInstance().actionDialog = "sair";
            navigator.pushView(telaDialog);
        }
        protected function btnLoginClick(event:MouseEvent):void
        {

            lblLoading.setStyle("color", "red");
            if(txtLogin.text == ""){
                lblLoading.text = "Você precisa preencher o Login";
                txtLogin.setFocus();
            }else if(txtSenha.text == ""){
                lblLoading.text = "Você precisa preencher a Senha";
                txtSenha.setFocus();
            }else{
                lblLoading.setStyle("color", "green");
                lblLoading.text = "Por favor aguarde...";

                //Efetuar o Login, Salvar para da próxima vez não precisar mais e redirecionar para a telaAreaUsuario
                navigator.pushView(telaAreaUsuario);

            }

        }

        protected function btnCadastroClick(event:MouseEvent):void
        {
            navigator.pushView(telaCadastro);               
        }


    ]]>
</fx:Script>

<fx:Style>
    @namespace s "library://ns.adobe.com/flex/spark";


</fx:Style>

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<s:actionContent>
    <s:Button width="50" height="40" icon="assets/sair.png" click="btnSairClick(event)"/>
</s:actionContent>
<s:Group left="0" right="0" top="0" bottom="0" contentBackgroundAlpha="0.4" horizontalCenter="0" verticalCenter="0">

    <s:Image id="backgroundImage" left="-15" right="-15" top="-12" bottom="-4" horizontalCenter="0" scaleMode="stretch"
         smooth="true" smoothingQuality="high" source="assets/someHDImage.png"
         verticalCenter="-4"/>

<!-- para dar uma borda arredondada ao layout-->
<s:Rect id="border" left="0" right="0" top="0" bottom="0" 
        radiusX="10" radiusY="10">

    <s:stroke>
        <s:SolidColorStroke id="borderStroke" color="#696969" weight="2" />
    </s:stroke>
</s:Rect>


    <!-- para dar uma borda arredondada ao layout-->
    <s:Scroller left="0" right="0" top="0" bottom="0" horizontalCenter="-5" verticalCenter="0">

        <s:Group width="100%" height="100%">

            <s:TextInput id="txtLogin" y="61" left="30" right="57" horizontalCenter="-14"/>
            <s:Label x="10" y="38" text="Login"/>
            <s:Label x="10" y="121" text="Senha"/>
            <s:TextInput id="txtSenha" y="143" left="30" right="57" horizontalCenter="-14" displayAsPassword="true"/>
            <s:Label id="lblLoading" x="4" y="196" width="100%" text="Efetue o login!" textAlign="center"/>

            <s:Button right="35" top="210" width="50" height="50" click="btnLoginClick(event)" icon="/assets/btlogin.png"/>
            <s:Label right="4" top="275" click="btnCadastroClick(event)" color="#0E16C3"
                     fontSize="12" text="Quero me cadastrar" textDecoration="underline"
                     useHandCursor="true"/>

        </s:Group>
    </s:Scroller>

</s:Group>
  

Комментарии:

1. Не могли бы вы быть более конкретными? Опубликуйте часть своего кода и точно опишите, чего вы ожидаете и что происходит не так.

2. Брайан, спасибо за комментарии. Ну, в моем приложении есть кнопка, и когда вы нажимаете на эту кнопку, это вызывает функцию, в которой есть строка navigator.pushView(); Но, прежде чем загружать второе представление, появляется один белый экран, а затем загружается мое второе представление. Могу ли я удалить этот белый экран?

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

4. Джош, я тестирую на своем устройстве и на симуляторе тоже.

Ответ №1:

В основной файл.mxml в папке / src вы должны добавить черный фон. Мой основной файл выглядит так: (у меня черный фон при просмотре pushview)

 <?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                            xmlns:s="library://ns.adobe.com/flex/spark" 
                            firstView="views.Start" 
                            splashScreenImage="MySplashScreen" 
                            backgroundColor="black">

</s:ViewNavigatorApplication>