Entrez dans la forêt des Kobolds... un petit coin de web indépendant.

Tatigeri wa perakero

Script de quizz

 

    
    Voilà un script de Moock à placer sur la première image de ton anim :
    /*
    * Multiple-Choice Quiz
    * Version: 1.0.1
    * Author: Colin Moock
    */
    
    // ========================================
    // LOAD CLASSES
    // ========================================
    // Notice that the filenames match the
    // namespace used. This is not required, but is a useful
    // convention.
    #include "textes/org.moock.Quiz.as"
    #include "textes/org.moock.QuizGUI.as"
    #include "textes/org.moock.Question.as"
    
    // ========================================
    // START APPLICATION
    // ========================================
    main();
    
    // Function: main()
    // Desc: The entry point for the quiz application.
    function main () {
    // Create a new quiz. The Quiz class manages the data (i.e., it's
    // the Model in the Model-View-Controller design pattern).
    var asQuiz = new org.moock.Quiz();
    
    // Create a QuizGUI instance to display the quiz and receive user input.
    // The QuizGUI instance will:
    // -respond to changes in the Quiz instance's data
    // -create UI elements that change the Quiz instance's data
    // (Hence, the QuizGUI class is the View and Controller in the MVC triad).
    var asQuizGUI = new org.moock.QuizGUI(this, asQuiz);
    
    // Now tell the Quiz instance which QuizGUI instance will be used
    // to render the quiz to screen. The QuizGUI wants to be notified of
    // changes in the quiz data so that the display can be updated.
    // In Observer pattern terms, the QuizGUI is the Observer and
    // the Quiz is the Observable.
    asQuiz.setQuizGUI(asQuizGUI);
    
    // All ready to start. Load the quiz data from an XML file.
    asQuiz.loadQuizData("asQuiz.xml");
    
    // The quiz could also be created manually here instead of
    // being loaded from an XML file. To create the quiz manually,
    // use Quiz.setTitle(), Quiz.setDescription(), and Quiz.addQuestion().
    // When the quiz is ready, we then call QuizGUI.displaySplashScreen().
    }
    
    
    et le xml externe avec les questions bien sûr:
    
    
    
    Ile Dauphine
    Ile Bourbon
    Ile de France
    
    
    
    1638
    1793
    1946
     
    
    
    L'?©glise de Saint-Louis
    L'?©glise de Sainte-Marie
    L'?©glise de Sainte-Anne
    L'?©glise de Saint-Leu
     
    
    
    Saint-Denis
    Saint-Pierre
    Saint-Paul
     
    
    
    1920
    1929
    1933
     
    
    
    Saint-Philippe
    Le Port
    Sainte-Rose
    Sainte-Suzanne
    
    
    
    le fichier AS externe nommé org.moock.Question.as à créer :
    // Define namespace.
    if(_global.org == undefined) {
    _global.org = new Object();
    } 
    if(_global.org.moock == undefined) {
    _global.org.moock = new Object();
    } 
    
    
    
    // =============================================================
    // Question Class
    // --------------
    // This class stores the data for a single question, including:
    // the question, the answers, the correct answer, and the
    // user's answer.
    // =============================================================
    
    /**
    * Question Constructor
    *
    * @param questionXML An XML object that contains the question data.
    * @param correctAnswer An optional zero-based integer indicating the
    * question's correct answer.
    * @param questionText An optional string specifying the text of 
    * the question.
    * @param answers An optional array of strings specifying the
    * possible answers for the question.
    */
    _global.org.moock.Question = function (questionXML, 
    correctAnswer, questionText, answers) {
    // Instance Properties
    this.questionText = "";
    this.answers = new Array();
    this.correctAnswer = 0;
    this.userAnswer = null;
    
    // Initialization.
    // If there's only one argument and it's an XMLnode object...
    var answerList = new Array();
    if (arguments.length == 1 && questionXML instanceof XMLnode) {
    // ...construct the question using the XML.
    this.setCorrectAnswer(questionXML.attributes.ANSWER);
    this.setQuestionText(questionXML.attributes.TEXT);
    for (var i=0; i < questionXML.childNodes.length; i++) {
    answerList[i] = questionXML.childNodes[i].firstChild.nodeValue;
    }
    this.setAnswers(answerList);
    } else {
    // ...otherwise assume the correctAnswer, questionText, answers format.
    this.setCorrectAnswer(correctAnswer);
    this.setQuestionText(questionText);
    this.setAnswers(answers);
    }
    }
    
    /**
    * Method: QuizGUI.setQuestionText()
    * Desc: Sets the question itself. For example "How old is Canada?"
    *
    * @param text The question's text.
    */
    org.moock.Question.prototype.setQuestionText = function (text) {
    this.questionText = text;
    }
    
    /**
    * Method: QuizGUI.getQuestionText()
    * Desc: Returns the question's text.
    */
    org.moock.Question.prototype.getQuestionText = function () {
    return this.questionText;
    }
    
    /**
    * Method: QuizGUI.setAnswers()
    * Desc: Sets the answers to the question as an array.
    *
    * @param answerList An array of string answers.
    */
    org.moock.Question.prototype.setAnswers = function (answerList) {
    this.answers = answerList;
    }
    
    /**
    * Method: QuizGUI.getAnswers()
    * Desc: Returns the answers to this question as an array.
    */
    org.moock.Question.prototype.getAnswers = function () {
    return this.answers;
    }
    
    /**
    * Method: QuizGUI.setCorrectAnswer()
    * Desc: Sets the correct answer for this question.
    *
    * @param index The zero-based position of the correct answer
    * in the answer list returned by getAnswers().
    */
    org.moock.Question.prototype.setCorrectAnswer = function (index) {
    // Could add type and bounds checking here, but we're keeping things
    // simple.
    this.correctAnswer = index;
    }
    
    /**
    * Method: QuizGUI.getCorrectAnswer()
    * Desc: Returns the correct answer to this question as an index in
    * the array returned by getAnswers().
    */
    org.moock.Question.prototype.getCorrectAnswer = function () {
    return this.correctAnswer;
    }
    
    /**
    * Method: QuizGUI.setUserAnswer()
    * Desc: Sets the user's guess for this question.
    *
    * @param index The zero-based position of the user's answer
    * in the answer list returned by getAnswers().
    */
    org.moock.Question.prototype.setUserAnswer = function (index) {
    // Could add type and bounds checking here, but we're keeping things
    // simple.
    this.userAnswer = index;
    }
    
    /**
    * Method: QuizGUI.getUserAnswer()
    * Desc: Returns the user's answer to this question as an index in
    * the array returned by getAnswers().
    */
    org.moock.Question.prototype.getUserAnswer = function () {
    return this.userAnswer;
    }
    le fichier externe en As à créer, appelé org.moock.Quiz.as :
    // Define namespace.
    if(_global.org == undefined) {
    _global.org = new Object();
    } 
    if(_global.org.moock == undefined) {
    _global.org.moock = new Object();
    } 
    
    
    
    // =============================================================
    // Question Class
    // --------------
    // This class stores the data for a single question, including:
    // the question, the answers, the correct answer, and the
    // user's answer.
    // =============================================================
    
    /**
    * Question Constructor
    *
    * @param questionXML An XML object that contains the question data.
    * @param correctAnswer An optional zero-based integer indicating the
    * question's correct answer.
    * @param questionText An optional string specifying the text of 
    * the question.
    * @param answers An optional array of strings specifying the
    * possible answers for the question.
    */
    _global.org.moock.Question = function (questionXML, 
    correctAnswer, questionText, answers) {
    // Instance Properties
    this.questionText = "";
    this.answers = new Array();
    this.correctAnswer = 0;
    this.userAnswer = null;
    
    // Initialization.
    // If there's only one argument and it's an XMLnode object...
    var answerList = new Array();
    if (arguments.length == 1 && questionXML instanceof XMLnode) {
    // ...construct the question using the XML.
    this.setCorrectAnswer(questionXML.attributes.ANSWER);
    this.setQuestionText(questionXML.attributes.TEXT);
    for (var i=0; i < questionXML.childNodes.length; i++) {
    answerList[i] = questionXML.childNodes[i].firstChild.nodeValue;
    }
    this.setAnswers(answerList);
    } else {
    // ...otherwise assume the correctAnswer, questionText, answers format.
    this.setCorrectAnswer(correctAnswer);
    this.setQuestionText(questionText);
    this.setAnswers(answers);
    }
    }
    
    /**
    * Method: QuizGUI.setQuestionText()
    * Desc: Sets the question itself. For example "How old is Canada?"
    *
    * @param text The question's text.
    */
    org.moock.Questcon.prototype.setQuestionText = function (text) {
    this.questionText = text;
    }
    
    /**
    * Method: QuizGUI.getQuestionText()
    * Desc: Returns the question's text.
    */
    org.moock.Question.prototype.getQuestionText = function () {
    return this.questionText;
    }
    
    /**
    * Method: QuizGUI.setAnswers()
    * Desc: Sets the answers to the question as an array.
    *
    * @param answerList An array of string answers.
    */
    org.moock.Question.prototype.setAnswers = function (answerList) {
    this.answers = answerList;
    }
    
    /**
    * Method: QuizGUI.getAnswers()
    * Desc: Returns the answers to this question as an array.
    */
    org.moock.Question.prototype.getAnswers = function () {
    return this.answers;
    }
    
    /**
    * Method: QuizGUI.setCorrectAnswer()
    * Desc: Sets the correct answer for this question.
    *
    * @param index The zero-based position of the correct answer
    * in the answer list returned by getAnswers().
    */
    org.moock.Question.prototype.setCorrectAnswer = function (index) {
    // Could add type and bounds checking here, but we're keeping things
    // simple.
    this.correctAnswer = index;
    }
    
    /**
    * Method: QuizGUI.getCorrectAnswer()
    * Desc: Returns the correct answer to this question as an index in
    * the array returned by getAnswers().
    */
    org.moock.Question.prototype.getCorrectAnswer = function () {
    return this.correctAnswer;
    }
    
    /**
    * Method: QuizGUI.setUserAnswer()
    * Desc: Sets the user's guess for this question.
    *
    * @param index The zero-based position of the user's answer
    * in the answer list returned by getAnswers().
    */
    org.moock.Question.prototype.setUserAnswer = function (index) {
    // Could add type and bounds checking here, but we're keeping things
    // simple.
    this.userAnswer = index;
    }
    
    /**
    * Method: QuizGUI.getUserAnswer()
    * Desc: Returns the user's answer to this question as an index in
    * the array returned by getAnswers().
    */
    org.moock.Question.prototype.getUserAnswer = function () {
    return this.userAnswer;
    }
    
    Et le dernier fichier en AS à créer appelé org.moock.QuizGUI.as :
    // Define namespacn.
    if(_global.org == undefined) {
    _global.org = new Object();
    } 
    if(_global.org.moock == undefined) {
    _global.org.moock = new Object();
    } 
    
    
    
    // =============================================================
    // QuizGUI Class
    // -------------
    // This class displays the data in a Quiz instance and creates
    // user interface elements that let the user take the quiz.
    // =============================================================
    
    /**
    * QuizGUI Constructor
    *
    * @param quizClip The clip used to display the quiz.
    * @param quizObject The Quiz instance we're displaying.
    */
    _global.org.moock.QuizGUI = function (quizClip, quizObject) {
    // Instance Properties. 
    this.quizClip = quizClip; // The clip used for quiz GUI display.
    this.quizObj = quizObject; // The Quiz instance (quiz data object).
    this.depthCounter = 0; // A unique depth for onscreen assets (clips and text fields).
    
    // Initialization.
    // Set movie scale mode and aligment.
    Stage.scaleMode = "noScale";
    Stage.align = "TL";
    };
    
    /**
    * Method: QuizGUI.displaySplashScreen()
    * Desc: Displays the quiz title screen. Users begin the quiz here.
    * If the quiz data is loaded from an XML file, this method is 
    * invoked automatically by Quiz.loadQuizData(). Otherwise, it should
    * be called manually when the questions of the quiz are ready.
    */
    org.moock.QuizGUI.prototype.displaySplashScreen = function () {
    // Store a convenient reference to the display clip and the quiz object.
    var quizClip = this.quizClip;
    var quizObj = this.quizObj;
    
    // Create the title.
    this.displayTitle(quizObj.getTitle(), "top");
    
    // Create the description.
    quizClip.createTextField("desc_txt", ++this.depthCounter, 0, 0, 0, 0);
    quizClip.desc_txt.autoSize = true;
    quizClip.desc_txt.text = quizObj.getDescription();
    quizClip.desc_txt.selectable = false;
    quizClip.desc_txt.setTextFormat(new TextFormat("Verdana", 14, 0x333333));
    quizClip.desc_txt._x = Stage.width/2 - quizClip.desc_txt._width/2;
    quizClip.desc_txt._y = quizClip.title_txt._y + quizClip.title_txt._height+20;
    
    // Create the Begin button.
    var begin_mc = this.createNavButton("En avant !");
    begin_mc._x = Stage.width/2 - begin_mc._width/2;
    begin_mc._y = quizClip.desc_txt._y + quizClip.desc_txt._height + 20; 
    begin_mc.onPress = function () {
    quizObj.startNewQuiz();
    };
    };
    
    /**
    * Method: QuizGUI.displayQuestion()
    * Desc: Displays a question on screen. Draws the entire UI from scratch.
    */
    org.moock.QuizGUI.prototype.displayQuestion = function () {
    // Store convenient references to the quizClip, quizObj, and quizGUI objects.
    var quizGUI = this;
    var quizClip = this.quizClip;
    var quizObj = this.quizObj;
    
    // Determine the current question.
    var currentQuestionIdx = quizObj.getCurrentQuestion();
    
    // Set the margins for question display.
    var questionLeftMargin = 70;
    var questionRightMargin = 70;
    
    // Create the question text field in the quizClip.
    quizClip.createTextField("q_txt", ++this.depthCounter, 0, 0, 0, 0);
    quizClip.q_txt._width = Stage.width - questionLeftMargin - questionRightMargin;
    quizClip.q_txt.multiline = true;
    quizClip.q_txt.wordWrap = true;
    quizClip.q_txt.autoSize = "left";
    quizClip.q_txt.text = "Question " + (currentQuestionIdx + 1)
    + "\n" 
    + quizObj.getQuestionAt(currentQuestionIdx).getQuestionText();
    quizClip.q_txt.selectable = false;
    // Set the overall format for the question.
    quizClip.q_txt.setTextFormat(new TextFormat("Verdana", 12));
    // Make the word "Question" bold and red.
    quizClip.q_txt.setTextFormat(0, 10, new TextFormat("Verdana", 12, 0x000099, true));
    quizClip.q_txt._x = questionLeftMargin;
    quizClip.q_txt._y = quizClip.title_txt._y + quizClip.title_txt._height + 40;
    
    // Create the quiz status text field in the quizClip.
    quizClip.createTextField("status_txt", ++this.depthCounter, 0, 0, 0, 0);
    quizClip.status_txt.autoSize = true;
    quizClip.status_txt.text = "Réponses : " + quizObj.getNumUserAnswers()
    + "/" + quizObj.getNumQuestions() + "."
    quizClip.status_txt.selectable = false;
    quizClip.status_txt.setTextFormat(new TextFormat("Verdana", 12));
    quizClip.status_txt._x = questionLeftMargin;
    quizClip.status_txt._y = Stage.height - quizClip.status_txt._height - 150;
    
    // Now the heavy lifting...create the answer buttons and answer text fields.
    // Note that it would probably be wise to create an answer button component
    // or class that handles all this work outside of the displayQuestion()
    // method. We make the buttons inline here simply to keep the focus on the
    // quiz, not the generation of UI libraries.
    
    // Determine where to place the answers (below the question).
    var questionBottomBound = quizClip.q_txt._y + quizClip.q_txt._height;
    // Retrieve the answers for this question from the Quiz object.
    var answers = this.quizObj.getQuestionAt(currentQuestionIdx).getAnswers();
    // For each answer to this question...
    for (var i = 0; i < answers.length; i++) {
    // ...make a button clip.
    var aBut_mc = this.quizClip.createEmptyMovieClip("aBut_mc" + i, ++this.depthCounter);
    
    // Draw a checkbox in the button clip.
    aBut_mc.lineStyle(0);
    aBut_mc.moveTo(0, 4);
    aBut_mc.lineTo(10, 4);
    aBut_mc.lineTo(10, 14);
    aBut_mc.lineTo(0, 14);
    aBut_mc.lineTo(0, 4);
    
    // If the user already has made a choice for this question, fill
    // the checkbox with red. (The user might have returned to a question
    // in order to change an answer).
    var userAnswer = quizObj.getQuestionAt(currentQuestionIdx).getUserAnswer();
    if (userAnswer != null && userAnswer == i) {
    aBut_mc.createEmptyMovieClip("choice_mc", ++this.depthCounter);
    aBut_mc.choice_mc.lineStyle(0);
    aBut_mc.choice_mc.moveTo(0, 4);
    aBut_mc.choice_mc.beginFill(0x000099);
    aBut_mc.choice_mc.lineTo(10, 4);
    aBut_mc.choice_mc.lineTo(10, 14);
    aBut_mc.choice_mc.lineTo(0, 14);
    aBut_mc.choice_mc.lineTo(0, 4);
    aBut_mc.choice_mc.endFill();
    }
    
    // Place the button in line with the question text, a little
    // right of the question text field's left border.
    aBut_mc._x = questionLeftMargin + 4;
    
    // Create the answer text field in the button clip.
    aBut_mc.createTextField("a_txt" + i, 1, 0, 0, 0, 0);
    var rightTextBorder = {x:Stage.width, y:0};
    aBut_mc.globalToLocal(rightTextBorder);
    aBut_mc["a_txt" + i]._width = rightTextBorder.x - questionRightMargin;
    aBut_mc["a_txt" + i].multiline = true;
    aBut_mc["a_txt" + i].wordWrap = true;
    aBut_mc["a_txt" + i].autoSize = "left";
    aBut_mc["a_txt" + i].text = answers[i];
    aBut_mc["a_txt" + i].selectable = false;
    aBut_mc["a_txt" + i].setTextFormat(new TextFormat("Verdana", 12));
    aBut_mc["a_txt" + i]._x = 20; // Position the text field in from the checkbox.
    // If we're making the first answer button, then position it
    // below the question text. Otherwise, position it below the previous button.
    if (i == 0) {
    aBut_mc._y = questionBottomBound + 2;
    } else {
    aBut_mc._y = quizClip["aBut_mc" + (i-1)].getBounds(quizClip).yMax;
    }
    
    // Now that the text field is made, make the button's hit area
    // to match its size. The hit area is another programmatically
    // drawn movie clip.
    aBut_mc.createEmptyMovieClip("hit_mc", 2);
    var hitAreaRightEdge = 20 + aBut_mc["a_txt" + i]._width;
    var hitAreaBottomEdge = aBut_mc["a_txt" + i]._height;
    aBut_mc.hit_mc.lineStyle(1);
    aBut_mc.hit_mc.beginFill(0x00FF00);
    aBut_mc.hit_mc.lineTo(hitAreaRightEdge, 0);
    aBut_mc.hit_mc.lineTo(hitAreaRightEdge, hitAreaBottomEdge);
    aBut_mc.hit_mc.lineTo(0, hitAreaBottomEdge);
    aBut_mc.hit_mc.lineTo(0, 0);
    aBut_mc.hit_mc.endFill();
    // Don't display the hit area on screen.
    aBut_mc.hit_mc._visible = false;
    // Assign the hit area clip as the button's hit area.
    aBut_mc.hitArea = aBut_mc.hit_mc;
    
    // Assign the button click behavior.
    aBut_mc.onPress = function () {
    quizObj.setUserAnswer(currentQuestionIdx, parseInt(this._name.substring(7)));
    }
    
    // On rollover, draw the button's "on" state.
    aBut_mc.onRollOver = function () {
    this.moveTo(0, 4);
    this.lineTo(10, 14);
    this.moveTo(10, 4);
    this.lineTo(0, 14);
    }
    
    // On rollout, draw the button's "off" state.
    aBut_mc.onRollOut = function () {
    this.clear();
    this.lineStyle(0);
    this.moveTo(0, 4);
    this.lineTo(10, 4);
    this.lineTo(10, 14);
    this.lineTo(0, 14);
    this.lineTo(0, 4);
    }
    }
    
    // We're done making the answer buttons. 
    // Now create the "Next" button, which the user clicks to
    // move to the next question.
    var next_mc = this.createNavButton(" Suivante ");
    // Position the Next button on the right edge of the Stage,
    // vertically above the status movie clip.
    next_mc._x = Stage.width - next_mc._width - 70;
    next_mc._y = Stage.height - quizClip.status_txt._height - 150;
    
    // If we're not on the last question...
    if (currentQuestionIdx < quizObj.getNumQuestions() - 1) {
    // ...activate the next button.
    next_mc.onPress = function () {
    quizObj.setCurrentQuestion(quizObj.getCurrentQuestion() + 1);
    };
    } else {
    // ...otherwise, fade out the button.
    new Color(next_mc).setRGB(0x999999);
    }
    
    // Create the "Back" button. 
    var back_mc = this.createNavButton(" Précédente ");
    // Position the Back button beside the Next button.
    back_mc._x = next_mc.getBounds(quizClip).xMin - back_mc._width - 10;
    back_mc._y = Stage.height - quizClip.status_txt._height - 150; 
    
    // If we're not on the first question...
    if (currentQuestionIdx > 0) {
    // ...activate the back button.
    back_mc.onPress = function () {
    quizObj.setCurrentQuestion(quizObj.getCurrentQuestion() - 1);
    };
    } else {
    // ...otherwise, fade out the button.
    new Color(back_mc).setRGB(0x999999);
    }
    
    // If all the questions have been answered, create a "Grade" button. 
    // Note that the first time the questions are all answered, 
    // the Quiz class automatically invokes QuizGUI.onQuizComplete().
    if (quizObj.isComplete()) {
    var grade_mc = this.createNavButton(" Score ", 0x000099);
    // Position the Grade button beside the Back button.
    grade_mc._x = back_mc.getBounds(quizClip).xMin - grade_mc._width - 30;
    grade_mc._y = Stage.height - quizClip.status_txt._height - 150; 
    
    // When the grade button is pressed, show the quiz end screen.
    grade_mc.onPress = function () {
    quizGUI.displayQuizEnd();
    };
    }
    };
    
    /**
    * Method: QuizGUI.displayQuizEnd()
    * Desc: Displays the user's score on screen, and offers a Try Again button.
    */
    org.moock.QuizGUI.prototype.displayQuizEnd = function () {
    // Need a reference to the quizGUI for use in the Continue button.
    var quizGUI = this;
    var quizClip = this.quizClip;
    
    // Clear the current question.
    this.clearScreen();
    
    // Display the quiz title.
    this.displayTitle(this.quizObj.getTitle(), "top");
    
    // Create a text field to hold the user's score.
    quizClip.createTextField("info_txt", ++this.depthCounter, 0, 0, 0, 0);
    quizClip.info_txt._width = Math.floor(Stage.width/2);
    quizClip.info_txt.multiline = true;
    quizClip.info_txt.wordWrap = true;
    quizClip.info_txt.autoSize = "left";
    
    quizClip.info_txt.text = "Merci d'avoir répondu."+ newline 
    + "Votre score final est de : "
    + this.quizObj.getScore() + "/" + this.quizObj.getNumQuestions();
    quizClip.info_txt.selectable = false;
    quizClip.info_txt.setTextFormat(new TextFormat("Verdana", 12, null, null, null, null, null, null, "center"));
    quizClip.info_txt._x = Stage.width/2 - quizClip.info_txt._width / 2;
    quizClip.info_txt._y = Stage.height/2 - quizClip.info_txt._height;
    
    // Create a button to let the user try again.
    var tryAgain_mc = this.createNavButton(" Recommencer ");
    tryAgain_mc._x = Stage.width/2 - tryAgain_mc._width/2;
    tryAgain_mc._y = quizClip.info_txt._y + quizClip.info_txt._height + 20; 
    tryAgain_mc.onPress = function () {
    quizGUI.quizObj.startNewQuiz();
    };
    };
    
    /**
    * Method: QuizGUI.displayTitle()
    * Desc: Draws the title to screen.
    * 
    * @param align The alignment of the title, either "middle" or "top".
    */
    org.moock.QuizGUI.prototype.displayTitle = function (title, align) {
    var quizClip = this.quizClip;
    
    // Create the title text field.
    quizClip.createTextField("title_txt", ++this.depthCounter, 0, 0, 0, 0);
    quizClip.title_txt.autoSize = true;
    // If the title argument is supplied, use it, otherwise, default to
    // the title set for the Quiz object.
    quizClip.title_txt.text = title != undefined ? title : this.quizObj.getTitle();
    quizClip.title_txt.selectable = false;
    quizClip.title_txt.setTextFormat(new TextFormat("Verdana", 14, 0x000099, true));
    quizClip.title_txt._alpha=0;
    
    // Position the title text field.
    quizClip.title_txt._x = Stage.width/2 - quizClip.title_txt._width/2;
    if (align == "middle") {
    quizClip.title_txt._y = Stage.height/2 - quizClip.title_txt._height/2;
    } else if (align == "top") {
    quizClip.title_txt._y = 200;
    }
    };
    
    /**
    * Method: QuizGUI.createNavButton()
    * Desc: Creates a new navigation button (e.g., "Next", "Back"), and
    * returns a reference to it.
    * 
    * @param text The text on the button.
    * @param col The color of the button border and text.
    */
    org.moock.QuizGUI.prototype.createNavButton = function (text, col) {
    // Set button color to black if none is supplied.
    col = col ? col : 0x000000;
    this.depthCounter++;
    var navBut_mc = this.quizClip.createEmptyMovieClip("navBut_mc" + this.depthCounter, this.depthCounter);
    navBut_mc.createTextField("but_txt", ++this.depthCounter, 0, 0, 0, 0);
    navBut_mc.but_txt.autoSize = true;
    navBut_mc.but_txt.text = text;
    navBut_mc.but_txt.selectable = false;
    navBut_mc.but_txt.border = false;
    navBut_mc.but_txt.borderColor = col;
    navBut_mc.but_txt.setTextFormat(new TextFormat("Verdana", 12, col));
    
    return navBut_mc;
    };
    
    /**
    * Method: QuizGUI.clearScreen()
    * Desc: Wipes the entire screen blank by removing all movie clips
    * and text fields from the target quiz clip.
    */
    org.moock.QuizGUI.prototype.clearScreen = function () {
    for (var p in this.quizClip) {
    if (typeof this.quizClip[p] == "movieclip") {
    this.quizClip[p].removeMovieClip();
    } else if (this.quizClip[p] instanceof TextField) {
    this.quizClip[p].removeTextField();
    }
    }
    };
    
    
    // #############################################
    // Event handlers
    // #############################################
    
    /**
    * Method: QuizGUI.onQuizStart()
    * Desc: Invoked when the user presses "begin" on the quiz splash screen.
    * When invoked, we display the first question.
    */
    org.moock.QuizGUI.prototype.onQuizStart = function () {
    this.clearScreen();
    this.displayTitle(this.quizObj.getTitle(), "top");
    this.displayQuestion();
    };
    
    /**
    * Method: QuizGUI.onQuestionUpdate()
    * Desc: Invoked when the current question changes or the data for a 
    * question changes (such as when the user submits an answer).
    * When invoked, we display the current question.
    */
    org.moock.QuizGUI.prototype.onQuestionUpdate = function () {
    this.clearScreen();
    this.displayTitle(this.quizObj.getTitle(), "top");
    this.displayQuestion();
    };
    
    /**
    * Method: QuizGUI.onQuizComplete()
    * Desc: Invoked when the user has answered ever question in the quiz.
    * When invoked, we display a screen that offers the user the choice
    * to Grade or Continue the quiz.
    */
    org.moock.QuizGUI.prototype.onQuizComplete = function () {
    // Need a reference to the quizGUI for use in the Continue button.
    var quizGUI = this;
    var quizClip = this.quizClip;
    
    // Clear the current question.
    this.clearScreen();
    
    // Display the quiz title.
    this.displayTitle(this.quizObj.getTitle(), "top");
    
    // Create a text field explaining that the quiz is finished.
    quizClip.createTextField("info_txt", ++this.depthCounter, 0, 0, 0, 0);
    quizClip.info_txt._width = Math.floor(Stage.width);
    quizClip.info_txt.multiline = true;
    quizClip.info_txt.wordWrap = true;
    quizClip.info_txt.autoSize = "left";
    quizClip.info_txt.text = "Vous avez répondu à toutes les questions."+ newline
    + "Pour connaître votre résultat, cliquez sur Score."+ newline
    + "Pour revenir en arrière et changer vos réponses, cliquez sur \"Continuer\"."+ newline
    + "En cliquant sur \"Score\", vous pouvez arrêter le quiz quand vous le désirez."
    quizClip.info_txt.selectable = false;
    quizClip.info_txt.setTextFormat(new TextFormat("Verdana", 12, null, null, null, null, null, null, "center"));
    quizClip.info_txt._x = Stage.width/2 - quizClip.info_txt._width / 2;
    quizClip.info_txt._y = Stage.height/2 - quizClip.info_txt._height;
    
    // Create a "Grade" button.
    var grade_mc = this.createNavButton(" Score ");
    grade_mc._x = Stage.width/2 - grade_mc._width - 10;
    grade_mc._y = quizClip.info_txt._y + quizClip.info_txt._height + 20; 
    grade_mc.onPress = function () {
    quizGUI.displayQuizEnd();
    };
    
    // Create a "Continue" button.
    var continue_mc = this.createNavButton(" Continuer ");
    continue_mc._x = Stage.width/2 + 10;
    continue_mc._y = quizClip.info_txt._y + quizClip.info_txt._height + 20; 
    continue_mc.onPress = function () {
    // Force the current question to display.
    quizGUI.quizObj.setCurrentQuestion(quizGUI.quizObj.getCurrentQuestion());
    };
    };
    
    Voilà ! Avec ça, en épluchant un peu tu devrais t'en tirer pour ton Quizz. 
    Nous l'avons testé puisqu'il nous a servi à en faire un pour notre île.
    
    
    A+
    Alise
    from RunIsland