2017-01-21 6 views
-1

Я получил этот код у своего наставника, и сама викторина работает; вы можете выбрать ответы и отслеживать, что вы это сделали, но не распознаете, правильно ли вы ответили или нет.AS3: Как я могу ответить на ответ зеленым или красным цветом, если ответ был прав или нет в викторине?

Я хочу, чтобы он выделял зеленый или красный цвет в зависимости от того, был ли нажат правильный ответ; но я не знаю, какой код правильный, поскольку я все еще новичок в Action script. Правильный ответ указан в XML, я просто должен ссылаться на код, который, как я думаю. Любая помощь?

Вот код:

package { 

    import flash.display.MovieClip; 
    import flash.text.TextField; 
    import flash.text.TextFormat; 
    import flash.text.TextFieldAutoSize; 
    import flash.net.URLLoader; 
    import flash.net.URLRequest; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import TabAnswer; 
    import IconNext; 

    public class Quiz extends MovieClip { 

     private var tf:TextFormat = new TextFormat ; 
     private var question:TextField = new TextField ; 
     private var answer:TabAnswer; 
     private var answers:Array = new Array ; 
     private var quiz:XML; 
     private var next:IconNext = new IconNext ; 
     private var currentQuestion:int = 0; 

     public function Quiz() { 
      // constructor code 
      var xmlLoader:URLLoader = new URLLoader ; 
      xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded); 
      xmlLoader.load(new URLRequest("quiz.xml")); 
     } 

     private function xmlLoaded(e:Event):void { 
      // make an XML instance using XML data passed to this function 
      quiz = new XML(e.target.data); 
      trace(quiz); 
      //set some text formatting 
      tf.size = 20; 
      tf.color = 0x000000; 
      tf.font = "Tw Cen MT Condensed"; 
      //create a textfield for question information 
      addChild(question); 
      question.setTextFormat(tf); 
      question.multiline = true; 
      question.width = question.textWidth; 
      question.autoSize = TextFieldAutoSize.LEFT; 
      question.defaultTextFormat = tf; 
      question.text = quiz.question[currentQuestion].description; 
      for (var a = 0; a < 4; a++) 
      { 
       var answer = new TabAnswer ; 
       answers.push(answer); 
       addChild(answers[a]); 
       answers[a].x = question.x; 
       answers[a].y = question.y + question.height + answer.height + ((a * answer.height) * 1.5); 
       answers[a].answer.text = quiz.question[currentQuestion].answers.answer[a]; 
       answers[a].addEventListener(MouseEvent.MOUSE_DOWN,answerSelected); 
      } 
      addChild(next); 
      next.x = stage.stageWidth - next.width * 1.3; 
      next.y = stage.stageHeight - next.height * 2.3; 
      next.addEventListener(MouseEvent.MOUSE_DOWN,nextQuestion); 
     } 

     private function answerSelected(e:MouseEvent):void { 
      trace(e.currentTarget.answer.text); 
      //check to see if the answer that has been pressed, matches the 
      //correctAnswer node in the quiz xml question 
     } 

     private function nextQuestion(e:MouseEvent):void { 
      currentQuestion++; 
      getQuestion(currentQuestion); 
     } 

     private function getQuestion(questionToGet:int):void { 
      question.text = quiz.question[questionToGet].description; 
      for (var a = 0; a < 4; a++) 
      { 
       answers[a].answer.text = quiz.question[questionToGet].answers.answer[a]; 
      } 
     } 
    } 
} 

Вот XML поэтому он будет делать это немного больше смысла, как это возможно, работает ?:

</question> 
<question> 
    <description>What is the role of the player that throws the ball to the batter?</description> 
<answers> 
     <answer>Catcher</answer> 
     <answer>Pitcher</answer> 
     <answer>Shortfield</answer> 
     <answer>Umpire</answer> 
    </answers> 
    <correctAnswer>Pitcher</correctAnswer> 
    </question> 

<question> 
    <description>How many bases are there?</description> 
<answers> 
     <answer>5</answer> 
     <answer>2</answer> 
     <answer>4</answer> 
     <answer>3</answer> 
    </answers> 
    <correctAnswer>3</correctAnswer> 
    </question> 

<question> 
    <description>What is it called when a batter hits the ball out of the field and runs around all the bases?</description> 
<answers> 
     <answer>Full round</answer> 
     <answer>Touchdown</answer> 
     <answer>Home Run</answer> 
     <answer>Goal</answer> 
    </answers> 
    <correctAnswer>Home Run</correctAnswer> 
    </question> 

<question> 
    <description>How many strikes is it for the batter to be out?</description> 
<answers> 
     <answer>3</answer> 
     <answer>4</answer> 
     <answer>1</answer> 
     <answer>6</answer> 
    </answers> 
    <correctAnswer>3</correctAnswer> 
    </question> 

<question> 
    <description>What is the batting technique called when a batter wants a quick base run?</description> 
<answers> 
     <answer>Punt</answer> 
     <answer>Strongarm</answer> 
     <answer>Bunt</answer> 
     <answer>Hit</answer> 
    </answers> 
    <correctAnswer>Bunt</correctAnswer> 
    </question> 

<question> 
    <description>Who is usually the team leader in a game?</description> 
<answers> 
     <answer>Pitcher</answer> 
     <answer>Center Fielder</answer> 
     <answer>Second Baseman</answer> 
     <answer>Catcher</answer> 
    </answers> 
    <correctAnswer>Catcher</correctAnswer> 
    </question> 

<question> 
    <description>There were 4 stategies mentioned, Sliding/Diving, Force Outs,Tag Outs, what is the last one?</description> 
<answers> 
     <answer>Robbing</answer> 
     <answer>Stealing</answer> 
     <answer>Force Play</answer> 
     <answer>Cheating</answer> 
    </answers> 
    <correctAnswer>Stealing</correctAnswer> 
    </question> 

<question> 
    <description>When pitching the ball, the ball need to be over what?</description> 
<answers> 
     <answer>All of the home plate</answer> 
     <answer>None of the home plate</answer> 
     <answer>Some of the home plate</answer> 
     <answer>To the side of the home plate</answer> 
    </answers> 
    <correctAnswer>Some of the home plate</correctAnswer> 
    </question> 

<question> 
    <description>Who was rated the No.1 Baseball player of 2016?</description> 
<answers> 
     <answer>Manny Machando</answer> 
     <answer>Chris Sale</answer> 
     <answer>Bryce Harper</answer> 
     <answer>Mike Trout</answer> 
    </answers> 
    <correctAnswer>Mike Trout</correctAnswer> 
    </question> 
</quiz> 
+0

Я вижу, вы уже знаете, как изменить цвет шрифта. Таким образом, ваш вопрос заключается в том, как проверить правильность ответа, да? –

+0

Да! Если я вижу, правильно ли был выбран ответ, да, я могу изменить цвет текстового поля или что-то в этом роде. Я просто не знаю, как это узнать? – BigBeann

+0

Существует много способов сделать это. У вас может быть множество вопросов и множество ответов. И если они находятся в одном порядке, просто сравните позиции массива. –

ответ

0
private function answerSelected (e:MouseEvent):void 
{ 
    trace (e.currentTarget.answer.text); 
    //check to see if the answer that has been pressed, matches the 
    //correctAnswer node in the quiz xml question 
    if (e.currentTarget.answer.text == quiz.question.correctAnswer.text) 
     trace("correct answer is:",quiz.question.correctAnswer.text,"answer picked was:",e.currentTarget.answer.text); 
     // change text color, or whatever. 
    } 
} 

Попробуйте это. Дайте мне знать, что это такое, если он не работает.