0

flash cs3とactionscript 3.0を使って一問一答クイズを作成しています。たくさんの質問があります。それを xml ドキュメントに入れたいのですが (xml ファイルをフラッシュ ファイル自体に入れることはできますか?誰かがそうしているのを見たと思います。)

わかりました、私の主な問題は、すべての質問が尋ねられるまで、繰り返さずに質問をシャッフルすることです。私はこのチュートリアルに取り組みましたが、繰り返すことなく素晴らしいシャッフルを行います。 http://www.flashandmath.com/howtos/deal/

しかし、一度に 1 つの質問をしたいと思います。フレームをシャッフルするオプションを検討しましたが、最後にクイズのスコアをカウントするにはどうすればよいでしょうか?

だから私はあなたの答えに従って私のコードを編集しました、

記入された答えが正しいか間違っているかをチェックする「チェック」という名前のボタンを作りたいです。答えが正しい場合、スコアが増加します。ユーザーは「次へ」という名前のボタンを押して、次の質問に進みます。

最終スコアは、すべての問題が終了した後の次のフレームで表示されます。カウントされたスコアを次のフレームに持っていってもよろしいですか?

または、すべての質問が終了したときにスコアとともにムービー クリップを表示する必要がありますか?

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);

では、なぜフレームごとにクイズを表示しようとするのでしょうか? actionscript コード ショーの使用。それはよりシンプルで柔軟です。テキストフィールドとしてクイズボックスを作成します。ユーザーの回答が正しければ、テキストを変更します。

これがスケルトンコードです。

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 に答える