0

我有一个用 actionscript 2 编写的测验。一切都很顺利,除了我不知道如何让分数在回答问题所需的每一秒内减少一分。

所以......每个问题的最高分数是 30 分,并且有一个 30 秒的计时器......所以测验更具挑战性,我希望它每回答一秒就减少 1 分。

这是我的代码...提前谢谢...

    Answer0Button.enabled=false; button0._visible=false;
Answer1Button.enabled=false; button1._visible=false;
Answer2Button.enabled=false; button2._visible=false;
Answer3Button.enabled=false; button3._visible=false;
Answer4Button.enabled=false; button4._visible=false;
Answer5Button.enabled=false; button5._visible=false;

function countdown() {
    counter--;
    countdown_txt.text = counter;
    if (counter == 0) {
        Answer0Button.enabled=false;
        Answer1Button.enabled=false;
        Answer2Button.enabled=false;
        Answer3Button.enabled=false;
        Answer4Button.enabled=false;
        Answer5Button.enabled=false;
        clearInterval(intID); 
        AnswerPopUp_mc.gotoAndPlay(1);
        AnswerPopUp_mc.AnswerPopUp.DisplayResult.htmlText = "" + TimeIsUp + "";
    }
}

// defining variables for data
var ChosenNumberOfQuestions = int(0); // Number of questions in quiz
var TotalNumberOfQuestions = int(0); // Total number of questions in XML file
var NumberOfQuestions = int(0); // min of two above
var QuestionCounter = int(0); // for dynamicaly showing questions
var CurrentQuestion = QuestionCounter + 1; // for dynamicaly showing questions
var Points = 0; // for each question
var TotalPoints = 0; // Max Points
var Score = 0; // display total score
var NumberOfCorrectAnswers = 0; // counter for questions answered correctly

var RandOrderQuestions = new Array();
var Questions = new Array();
var Images = new Array();
var CorrectAnswers = new Array();
var Answers = new Array();
var ExplanationsIfCorrect = new Array();
var ExplanationsIfNotCorrect = new Array();
var TimesForSolving = new Array();
var NumberOfPoints = new Array();


// roll over states for buttons
button0.onEnterFrame = function() { 
    if (mouse_over_button0) { 
        _root.button0.nextFrame(); 
    } else { 
        _root.button0.prevFrame(); 
    } 
}; 
button1.onEnterFrame = function() { 
    if (mouse_over_button1) { 
        _root.button1.nextFrame(); 
    } else { 
        _root.button1.prevFrame(); 
    } 
}; 
button2.onEnterFrame = function() { 
    if (mouse_over_button2) { 
        _root.button2.nextFrame(); 
    } else { 
        _root.button2.prevFrame(); 
    } 
}; 
button3.onEnterFrame = function() { 
    if (mouse_over_button3) { 
        _root.button3.nextFrame(); 
    } else { 
        _root.button3.prevFrame(); 
    } 
}; 
button4.onEnterFrame = function() { 
    if (mouse_over_button4) { 
        _root.button4.nextFrame(); 
    } else { 
        _root.button4.prevFrame(); 
    } 
}; 
button5.onEnterFrame = function() { 
    if (mouse_over_button5) { 
        _root.button5.nextFrame(); 
    } else { 
        _root.button5.prevFrame(); 
    } 
}; 

// Label Color
var changeColor2 = new Color(label_mc.coloredLabel);
changeColor2.setRGB(labelColor);
// Change Buttons Color
var changeColorA = new Color(button0.letterA_mc.letterA);
changeColorA.setRGB(labelColor);
var changeColorB = new Color(button1.letterB_mc.letterB);
changeColorB.setRGB(labelColor);
var changeColorC = new Color(button2.letterC_mc.letterC);
changeColorC.setRGB(labelColor);
var changeColorD = new Color(button3.letterD_mc.letterD);
changeColorD.setRGB(labelColor);
var changeColorE = new Color(button4.letterE_mc.letterE);
changeColorE.setRGB(labelColor);
var changeColorF = new Color(button5.letterF_mc.letterF);
changeColorF.setRGB(labelColor);
// Change Color of points, counter...
var changeColorCounter = new Color(countdown_txt);
changeColorCounter.setRGB(labelColor);
var changeSlashColor = new Color(slash);
changeSlashColor.setRGB(labelColor);
var changeCurrQColor = new Color(DisplayCurrQ);
changeCurrQColor.setRGB(labelColor);
var changeTotalQColor = new Color(DisplayTotalQ);
changeTotalQColor.setRGB(labelColor);
var changePointsColor = new Color(DisplayPoints);
changePointsColor.setRGB(labelColor);
var changeScoreColor = new Color(DisplayScore);
changeScoreColor.setRGB(labelColor);

// Background Color
new Color (BackGround.bg).setRGB(BackgroundColor); 
new Color (FadeIn.bg1.bg).setRGB(BackgroundColor); 

// loading data from XML
var xmlData = new XML();
xmlData.ignoreWhite = true;

xmlData.onLoad = function () {

    // Default Time for solving
    DefaultTimeInSeconds = this.firstChild.attributes.DefaultTimeInSeconds;
        trace ("DefaultTime: " + DefaultTimeInSeconds);
    // Default Points
    DefaultPoints = this.firstChild.attributes.DefaultPoints;
        trace ("DefaultPoints: " + DefaultPoints);
    // Default comment on answers
    DefaultIfCorrectAnswer = this.firstChild.attributes.DefaultIfCorrectAnswer;
    DefaultIfWrongAnswer = this.firstChild.attributes.DefaultIfWrongAnswer;

    // Default if time is up
    TimeIsUp = this.firstChild.attributes.TimeIsUp;

    // Random order of questions or not
    RandomQuestions = this.firstChild.attributes.RandomQuestions;
        trace ("RandomQuestions: " + RandomQuestions);

    // Number Of Questions 
    ChosenNumberOfQuestions = this.firstChild.attributes.NumberOfQuestions;
        trace ("ChosenNumberOfQuestions: " + ChosenNumberOfQuestions);

    // Counting  total number of Questions in XML file
    var nodes = this.firstChild.childNodes;
    for (var a=0; a<nodes.length; a++){
        TotalNumberOfQuestions = a+1;
    }  
    trace ("TotalNumberOfQuestions: " + TotalNumberOfQuestions);    

    // Finaly - number of questions in QUIZ - min of two above
    if (ChosenNumberOfQuestions < TotalNumberOfQuestions) { 
        NumberOfQuestions = ChosenNumberOfQuestions; 
    } else {
        NumberOfQuestions = TotalNumberOfQuestions;
    }

    // Random order Questions or not
    // first we populate array with question numbers
    for(i=0; i<TotalNumberOfQuestions; i++){
        RandOrderQuestions[i] = i;
        trace(RandOrderQuestions);
    }
    // if we want random questions we use random sorting of number of questions
    if (RandomQuestions == "TRUE") { 
        RandOrderQuestions.sort(function () {
            return random(2) ? true : false;
        });
        trace(RandOrderQuestions);
    } 
    ///////////////////////////
    // POPULATING FROM XML
    for (var i=0; i < NumberOfQuestions; i++ )
    {   
        // Chose the number of question from RandOrderQuestions array
        var numInXML = RandOrderQuestions[i];
        trace("Question number in XML: " + numInXML);

        // populating questions from XML
        Questions[i] = this.firstChild.childNodes[numInXML].childNodes[0].firstChild.nodeValue; 
        //trace(Questions);

        //populating Correct Answers from XML
        CorrectAnswers[i] = this.firstChild.childNodes[numInXML].childNodes[1].attributes.correctAnswer; 
        //trace(CorrectAnswers);

        // populating options for answers from XML
        var NewArray = new Array(); // temp array for answers for each question
        for (var j=0; j < this.firstChild.childNodes[numInXML].childNodes[1].childNodes.length; j++ )
            {
            trace(i + " "+ j);
            NewArray[j] = this.firstChild.childNodes[numInXML].childNodes[1].childNodes[j].firstChild.nodeValue;
            //trace(NewArray);
            NewArray.sort(function () {
            return random(2) ? true : false;
            });

            }
        Answers.push(NewArray); // push answers for this i question in main Answers array

        //populating additional options from XML
        ExplanationsIfCorrect[i] = this.firstChild.childNodes[numInXML].childNodes[2].attributes.explanationIfCorrect; 
        ExplanationsIfNotCorrect[i] = this.firstChild.childNodes[numInXML].childNodes[2].attributes.explanationIfNotCorrect; 
        TimesForSolving[i] = this.firstChild.childNodes[numInXML].childNodes[2].attributes.timeInSeconds; 
        NumberOfPoints[i] = this.firstChild.childNodes[numInXML].childNodes[2].attributes.points; 
        Images[i] = this.firstChild.childNodes[numInXML].childNodes[2].attributes.imageIfCorrect; 
        Images[i] = this.firstChild.childNodes[numInXML].childNodes[2].attributes.imageIfIncorrect;

    }
    trace("Questions: " + Questions); trace("Correct Answers: " + CorrectAnswers); 
    trace(NewArray);
    trace(ExplanationsIfCorrect); trace(ExplanationsIfNotCorrect); trace(TimesForSolving); trace(NumberOfPoints);  trace(Images);

    // show first question (QuestionCounter=0)
    QuestionNumber.text = "Question #" + 1;
    QuestionDisplay.htmlText = Questions[QuestionCounter];  
    // show answers for first question (QuestionCounter=0)
    if (0 < Answers[QuestionCounter].length){ Answer0Display.text = Answers[QuestionCounter][0]; Answer0Button.enabled=true; button0._visible=true;} else { button0._visible=false;}
    if (1 < Answers[QuestionCounter].length){ Answer1Display.text = Answers[QuestionCounter][1]; Answer1Button.enabled=true; button1._visible=true;} else { button1._visible=false;}
    if (2 < Answers[QuestionCounter].length){ Answer2Display.text = Answers[QuestionCounter][2]; Answer2Button.enabled=true; button2._visible=true;} else { button2._visible=false;}
    if (3 < Answers[QuestionCounter].length){ Answer3Display.text = Answers[QuestionCounter][3]; Answer3Button.enabled=true; button3._visible=true;} else { button3._visible=false;}
    if (4 < Answers[QuestionCounter].length){ Answer4Display.text = Answers[QuestionCounter][4]; Answer4Button.enabled=true; button4._visible=true;} else { button4._visible=false;}
    if (5 < Answers[QuestionCounter].length){ Answer5Display.text = Answers[QuestionCounter][5]; Answer5Button.enabled=true; button5._visible=true;} else { button5._visible=false;}
    // show image if defined
    if (Images[QuestionCounter]){ loadMovie(Images[QuestionCounter],"imgContainer"); } else {  }
    // determine the number of points
    if (NumberOfPoints[QuestionCounter]){ Points = NumberOfPoints[QuestionCounter] } else { Points = DefaultPoints }

    // start counter
    if (TimesForSolving[QuestionCounter]){ 
        countdown_time = TimesForSolving[QuestionCounter] 
    } else { 
        countdown_time = DefaultTimeInSeconds 
    } // now call the function
        counter = countdown_time;
        countdown_txt.text = countdown_time;
        clearInterval(intID); 
        intID = setInterval(countdown,1000);
    }
4

1 回答 1

0

我看不到您在哪里添加分数,但我相信您可以设置 score = counter 因为您的计数器是剩余时间。

于 2013-01-17T06:18:22.160 回答