Не будет отображать данные при запуске или не будет отображать данные при отладке. - PullRequest
0 голосов
/ 15 августа 2011

Это редактирование моего вопроса.Здесь довольно много кода, но проблемная область находится ниже второго набора трехстрочных комментариев.Остальное я застрял на всякий случай, если совершенно не понял, в чем проблема.С оператором "if" я могу нормально отображаться в прогоне, но не в отладке.Если я избавляюсь от условного выражения, он отлично работает при отладке, но не при обычном запуске.Эти ошибки возникают только при первом запуске теста.В любом режиме он работает нормально, я беру второй тест.Любая помощь или предложения приветствуются.Спасибо ...

    // ** this function is called from another component that passes in the array of qnums 
    // ** and  then function clears data from previous quizzes. Component starts in the 
    // ** "loadingState **//    
        public function startQuiz(qNums:Array):void
        {
            quizNumbers = qNums;
            // ** deleted the reset functions for readability ** //
            showQuestion();
        }

    // ** calls the questions from sql  ** //
        protected function showQuestion():void{
            getQuestionByNumberResult.token = quizService.getQuestionByNumber(quizNumbers[i]);
        }

    // ** result handler from the sql call  and randomizes answers and feedbacks ** //      
        protected function getQuestionByNumberResult_resultHandler(event:ResultEvent):void
        {
        // ** deleted the logic that builds the arrays and randomizes them ** //
            ranAnswerArray = Randomizer.qsAndFbcks(answersArray, tempArray);
            ranFeebbackArray = Randomizer.qsAndFbcks(feedbackArray, tempArray);


        // ** This seems to be where the problem is. With the "if" statement it runs fine in a ** //
        // ** regular run, but doesn't display the first question in debug mode. Without the "if" and I just ** //                  // ** call  the showTheQuestion() function it is the problem is reversed ; it runs fine in debug, ** //
        // ** but doesn't show the first question in a regular run. ** //


            if (currentState != "quizingState"){
            currentState="quizingState";
            addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, quizStateChange);}
            else{ showTheQuestion();}

            //showTheQuestion();            
        }
        // ** function called from state change listener ** //
        protected function quizStateChange(event:StateChangeEvent):void
        {
            showTheQuestion();
        }
        // ** this function tells the visual components what to display ** //
        protected function showTheQuestion():void{
            // ** deleted logic that says how many radios and labels should be visible ** //
            questionText.text = data.question_txt;
            zanswer01.text = ranAnswerArray[0];
            zanswer02.text = ranAnswerArray[1];
            zanswer03.text = ranAnswerArray[2];
            zanswer04.text = ranAnswerArray[3];
        }
    ]]>
</fx:Script>


<s:states>
    <s:State name="quizingState"/>
    <s:State name="loadingState"/>
    <s:State name="finishedState"/>
</s:states>

// ** deleted the declarations block for readability. I left the display components just in case ** //
// ** something seemed wrong with them. ** //   

    <s:Label id="questionText" includeIn="quizingState" x="42" y="54" width="699" height="138" color="#5BAAFB"
             fontFamily="Arial" fontSize="22" fontWeight="normal"
             text=""/>
    <s:Form includeIn="quizingState" x="48" y="167" height="219">
        <s:HGroup id="zhGroup01" verticalAlign="baseline">
            <s:RadioButton groupName="selectedAnswer" value="0"/>
            <s:Label id="zanswer01" text="" verticalAlign="middle"/>
        </s:HGroup>
        <s:HGroup id="zhGroup02" verticalAlign="baseline">
            <s:RadioButton groupName="selectedAnswer" value="1"/>
            <s:Label id="zanswer02" text=""/>
        </s:HGroup>
        <s:HGroup id="zhGroup03" verticalAlign="baseline">
            <s:RadioButton id="zradio3" groupName="selectedAnswer" value="2"/>
            <s:Label id="zanswer03" text=""/>
        </s:HGroup>
        <s:HGroup id="zhGroup04" verticalAlign="baseline">
            <s:RadioButton id="zradio4" groupName="selectedAnswer" value="3"/>
            <s:Label id="zanswer04" text=""/>
        </s:HGroup>     
    </s:Form>

1 Ответ

1 голос
/ 15 августа 2011

Вы не должны запускать showTheQuestion() сразу после изменения состояния.Ваши компоненты в состоянии еще не успели инициализироваться.Я бы сказал, что вам не нужна эта функция, поскольку в состоянии отображается «показать вопрос».

Если вам это действительно нужно, вы должны добавить его к событию завершения создания на одном изкомпоненты состояния или, может быть, событие enterState в самом состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...