Я получил этот код у своего наставника, и сама викторина работает; вы можете выбрать ответы и отслеживать, что вы это сделали, но не распознаете, правильно ли вы ответили или нет.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>
Я вижу, вы уже знаете, как изменить цвет шрифта. Таким образом, ваш вопрос заключается в том, как проверить правильность ответа, да? –
Да! Если я вижу, правильно ли был выбран ответ, да, я могу изменить цвет текстового поля или что-то в этом роде. Я просто не знаю, как это узнать? – BigBeann
Существует много способов сделать это. У вас может быть множество вопросов и множество ответов. И если они находятся в одном порядке, просто сравните позиции массива. –