我正在使用flash cs3和actionscript 3.0创建一个问答测验。 我有一大堆问题,我希望把它放到xml文件中(xml文件可以驻留在flash文件本身吗?我以为我见过有人那样做了。)
好吧,我的主要问题是在问到所有问题之前不重复问题。 我已经参与了这个教程,并且它没有重复就做了很好的改组。 http://www.flashandmath.com/howtos/deal/但是,我想一次提出一个问题。 我已经研究了改组框架的选项, 但我想我怎样才能算出最后测验的分数?
所以我根据你的回答编辑了我的代码,
我想创建一个名为“check”的按钮来检查填写的答案是正确还是错误。 如果答案是对的,分数会增加。 用户将点击名为“next”的按钮转到下一个问题。
在所有问题完成后,最终得分将显示在下一帧。 将得分计算到下一帧是否可以?
或者,当所有问题都结束时,我应该用分数显示影片剪辑吗?
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;
我注意到如果答案错误,用户可以再次填写答案。我们是否只为用户的第一次尝试给出分数?
非常感谢:)答案 0 :(得分: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);