Actionscript Code:
package
{
import events.EventType;
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
*/
public class Main extends Sprite
{
private const QUESTIONS:Array = ["How old are you?", "Whats your hair color", "How ugly are you", "end"]
private const ANSWERS:Array = ["22", "one feet", "very"]
private const POSSIBLE_ANSWERS:Array = [ ["22", "21", "20"], ["brown", "blonde", "red"], ["very", "not", "a bit"], ["this is the end", "c", "c"] ]
private const CORRECTED_TEXT:Array = ["Correct Answer! 20 is the good answer!", "Correct Answer! brown is the good answer!", "Correct Answer! ugly is the good answer!"]
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//addQuestionsClass();
addAnswersClass();
}
private function addAnswersClass():void
{
var answers:Answers = new Answers(ANSWERS, POSSIBLE_ANSWERS, QUESTIONS, CORRECTED_TEXT);
addChild(answers);
}
}
}
Actionscript Code:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
*/
public class Answers extends Sprite
{
private var _answers:Array;
private var _questions:Array;
private var _possibleAnswers:Array;
private var _correct:Array;
private var _numberOfAnswers:Number = 3;
private var _activeId:int;
private var _answerItems:Array;
private var _itemClicked:Boolean = false;
private var box:Sprite;
private var close:Sprite;
private var next:Sprite;
private var clickedId:int;
private var questionId:int = 0;
private var answerId:int = 0;
private var correctedAnswerTextId:int = 0;
private var question:QuestionItem;
private var answer:AnswerItem;
private var answerHolder:Sprite;
private var questionHolder:Sprite;
private var correctHolder:Sprite;
private var _correctAnswerTextHolder:Array;
public function Answers(answers:Array, possibleAnswers:Array, questions:Array, correct:Array):void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
_answers = answers;
_possibleAnswers = possibleAnswers;
_questions = questions;
_correct = correct;
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
showQuestions(questionId);
showAnswer(answerId);
setItemActive(_activeId);
okayBox();
createCloseBox();
createNextButton();
showCorrectText(correctedAnswerTextId);
}
private function showQuestions(id:int):void
{
questionHolder = new Sprite();
addChild(questionHolder);
for (var i:int = 0; i < 3; i++)
{
question = new QuestionItem(_questions[id]);
question.id = i;
questionHolder.addChild(question);
question.x = 300;
question.y = 100;
}
}
private function showAnswer(id:int):void
{
answerHolder = new Sprite();
addChild(answerHolder);
_answerItems = [];
for ( var i:int = 0; i < 3; i++)
{
answer = new AnswerItem(_possibleAnswers[id][i]);
answerHolder.addChild(answer);
answerHolder.x = 300;
answerHolder.y = 200;
answer.y = 25 * i;
answer.addEventListener(MouseEvent.CLICK, clickAnswer);
answer.buttonMode = true;
answer.mouseChildren = false;
answer.id = i;
_answerItems.push(answer);
}
}
private function showCorrectText(id:int):void
{
correctHolder = new Sprite;
addChild(correctHolder);
_correctAnswerTextHolder = [];
for ( var i:int = 0; i < 3; i++)
{
var _correctAnswerText:CorrectAnswerText = new CorrectAnswerText(_correct[id][i]);
correctHolder.addChild(_correctAnswerText);
correctHolder.x = 210;
correctHolder.y = 210;
_correctAnswerText.id = i;
_correctAnswerTextHolder.push(_correctAnswerText);
}
}
private function setItemActive(newActiveId:int):void
{
AnswerItem (_answerItems[_activeId]).active = false;
AnswerItem (_answerItems[newActiveId]).active = true;
_activeId = newActiveId;
}
// clicks and e.current target is the answer you clicked + id
// item is active
// if item is active show box
private function clickAnswer(e:MouseEvent):void
{
clickedId = AnswerItem (e.currentTarget).id;
setItemActive (clickedId);
_possibleAnswers[clickedId];
_itemClicked = true;
if (_itemClicked)
{
box.visible = true;
close.visible = true;
next.visible = true;
}
else
{
box.visible = false;
close.visible = false;
next.visible = false;
}
}
// create a box to make your answer sure.
private function okayBox():void
{
box = new Sprite();
addChild(box);
box.graphics.beginFill (0xFFF000, 1);
box.graphics.drawRect(200, 200, 400, 200);
box.graphics.endFill();
box.visible = false;
}
//create a box to close the "are you sure" box.
private function createCloseBox():void
{
close = new Sprite();
addChild(close);
close.graphics.beginFill (0xFF000, 1);
close.graphics.drawRect(200, 200, 10, 10);
close.graphics.endFill();
close.addEventListener(MouseEvent.CLICK, closeBox);
close.visible = false;
close.buttonMode = true;
}
private function closeBox(e:MouseEvent):void
{
box.visible = false;
close.visible = false;
next.visible = false;
}
private function createNextButton():void
{
next = new Sprite();
addChild(next);
next.graphics.beginFill (0xFF000, 1);
next.graphics.drawRect(200, 400, 40, 10);
next.graphics.endFill();
next.addEventListener(MouseEvent.CLICK, clickNext);
next.visible = false;
next.buttonMode = true;
}
private function clickNext(e:MouseEvent):void
{
checkAnswer();
}
private function checkAnswer():void
{
//check if answer is right or wrong by users choice.
//splice the first answers of the array
if (_possibleAnswers[clickedId] == _possibleAnswers[0])
{
questionHolder.visible = false;
box.visible = false;
close.visible = false;
next.visible = false;
questionId++;
showQuestions(questionId);
questionHolder.visible = true;
answerHolder.visible = false;
answerId++;
showAnswer(answerId);
answerHolder.visible = true;
correctHolder.visible = false;
correctedAnswerTextId++;
showCorrectText(correctedAnswerTextId);
correctHolder.visible = true;
setPopUpAbove();
hideAllQuestions();
}
else
{
trace("you fail");
}
}
private function setPopUpAbove():void
{
setChildIndex(box, 1);
setChildIndex(answerHolder, 0);
}
private function createEndScreen():void
{
var endScreen:Sprite = new Sprite();
addChild(endScreen);
endScreen.graphics.beginFill(0xFF0000, 1);
endScreen.graphics.drawRect(450, 200, 200, 200);
endScreen.graphics.endFill();
}
private function hideAllQuestions():void
{
for (var i:int = 0; i < _questions.length; i++)
{
if ( questionId > 2)
{
questionHolder.visible = false;
answerHolder.visible = false;
createEndScreen();
}
}
}
public function get activeId():int
{
return _activeId;
}
public function set activeId(value:int):void
{
_activeId = value;
setItemActive(value);
}
}
}