0

我正在使用 flash cs3 和 actionscript 3.0 创建一个问答测验。我有很多问题,我希望将其放入 xml 文档中(xml 文件可以驻留在 flash 文件本身中吗?我以为我看到有人这样做了。)

好的,我的主要问题是在问完所有问题之前不重复问题。我已经研究过这个教程,它可以很好地洗牌而不重复。 http://www.flashandmath.com/howtos/deal/

但是,我想一次问一个问题。我已经研究了随机播放帧的选项,但我想我如何计算测验结束时的分数?

所以我根据你的回答编辑了我的代码,

我想制作一个名为“检查”的按钮来检查填写的答案是正确还是错误。如果答案正确,分数会增加。用户将点击一个名为“下一步”的按钮以转到下一个问题。

完成所有问题后,最终分数将显示在下一帧。将计分到下一帧可以吗?

或者,当所有问题结束时,我应该只制作一个带有分数的电影剪辑吗?

check_btn.addEventListener(MouseEvent.CLICK, checkAnswer); next_btn.addEventListener(MouseEvent.CLICK, nextQuestion);

var index:int = 0;

var score:int = 0;

questions_txt.text = newQuizModel[index]["q"];

var userAnswer:String = "";

function checkAnswer(MouseEvent):void{

userAnswer = answers_txt.text;

if (userAnswer == newQuizModel[index]["a"])
{
    answers_txt.text = "";
    score++;
}
else
{
    answers_txt.text = "";
    score = score;
}

index++;
index%= quizModel.length;
nextQuestion(index);

}

function nextQuestion(idx:int):void{

for(var i:int=0; i<newquizModel.length; i++){

    if(i == quizModel.length - 1){
        nextFrame();
    }
    else{
        questions_txt.text = newQuizModel[idx]["q"];}

nextQuestion(index);

下一帧的代码,

score_txt.text = score.toString()+"/"+newQuizmodel.length;

我注意到如果答案错误,用户可以再次填写答案。我们如何只为用户的第一次尝试评分?

非常感谢 :)

4

1 回答 1

1

尝试这个?

var quiz:Array = 
[
  "1+1 = ?",
  "5*5+5 = ?",
  "10/5*5-4 = ?",
  "12/6*6/12 = ?",
  "13+10/5-13/2 = ?"
];

function shuffleArray($arr:Array):Array
{
    var l:Number = $arr.length - 1;

    for (var it:uint = 0; it<l; it++)
    {
        var r:int = Math.round(Math.random() * l);
        var tmp:String = $arr[it];
        $arr[it] = $arr[r];
        $arr[r] = tmp;
    }
    return $arr;
}

var refreshQuiz:Array = shuffleArray(quiz);

trace(refreshQuiz);

那么,为什么您尝试逐帧显示测验?使用动作脚本代码显示。那更简单灵活。制作一个测验框作为文本字段。如果用户回答正确,则更改文本。

这是骨架代码。

var quizModel:Array = [{q:"1+1 = ?", a:"2"}, {q:"5+5 = ?", a:"10"}, {q:"2+2 = ?", a:"4"}, {q:"6+6 = ?", a:"12"},{q:"8-7 = ?",a:"1"}];

var user_ans:Array = new Array();
var newQuizModel:Array = shuffleArray(quizModel);
stage.addEventListener(KeyboardEvent.KEY_DOWN, go);

function shuffleArray(arr:Array):Array
{
    var l:Number = arr.length - 1;

    for (var it:uint = 0; it<l; it++)
    {
        var r:int = Math.round(Math.random() * l);
        var tmp:Object = arr[it];
        arr[it] = arr[r];
        arr[r] = tmp;
    }
    return arr;
}

var index:int = 0;
questions_txt.text = newQuizModel[index]["q"];
var userAnswer:String = "";
function go(k:KeyboardEvent):void
{
    if (k.keyCode != Keyboard.ENTER)
    {
        return;
    }

    userAnswer = answers_txt.text;

    if (userAnswer == newQuizModel[index]["a"])
    {
        answers_txt.text = "Your answer is correct!";
    }
    else
    {
        answers_txt.text = "Your answer is wrong";
        return;
    }

    index++;
    index%= quizModel.length;
    showQuiz(index);
}

function showQuiz(idx:int):void
{
    questions_txt.text = newQuizModel[idx]["q"];
}

showQuiz(index);
于 2013-07-22T03:39:10.013 回答