AS基础教程整理第9/13页

 更新时间:2007年03月22日 00:00:00   作者:  

第十章 第三个版本的选择题

首先,此版本沿用了上一版本的函数answer和gradeUser
在这一版本中,用户的答案与正确答案将使用数组来存放

看看我们的新代码:
stop();
// *** Init main timeline variables 
var displayTotal; // Text field for displaying user's final score
var numQuestions = 2; // Number of questions in the quiz
var totalCorrect = 0; // Number of correct answers
// 上一版本中,用户答案使用了两个变量来存放,但是试想如果是10题、100题呢?使用数组将更容易管理,也更容易处理
var userAnswers = new Array(); // Array containing user's guesses 这是定义数组的语句,但是还未输入数据
var correctAnswers = [3, 2]; // Array containing each correct answer 这一句既定义数组,同时输入数据,因为正确答案是已知的

// *** Function to register the user's answers
function answer (choice) {
  // Tack the user's answer onto our array 将数据PUSH进数组,因为是顺序答题,所以用方法PUSH
  userAnswers.push(choice);
  // Do a little navigation, baby
  // 如果答案数超过题目总数,自然就跳到quizEnd帧了
  // 注意在本例中,已经不用上例的answer.currentAnswer而是使用userAnswers.length来控制问题是否结束
  // 我们甚至可以用correctAnswers.length来代替numQuestions,记录正确答案数组的长度,不就是题目总数吗?
  if (userAnswers.length == numQuestions) {
    gotoAndStop ("quizEnd");
  } else {
    gotoAndStop ("q"+ (userAnswers.length + 1));
  }
}

// *** Function to tally the user's score
function gradeUser() {
  // Count how many questions were answered correctly.
  // 开始改题,这里就不用再用上个版本的eval啦,那个东东实在是难懂兼难用,这个版本相对就很清晰明快
  for (var j = 0; j < userAnswers.length; j++) {
    if (userAnswers[j] == correctAnswers[j]) {
      totalCorrect++;
    }
  }
  // Show the user's score in a dynamic text field
  displayTotal = totalCorrect;
}

电影的其他部分不用改动(这就是使用FUNTION的好处啦,升级多快~)

OK,进入下一章之前想想目前版本的弱点
* 题目,每次修改题目都要进入FLASH的场景修改,麻烦
* 按钮,每题就要做三个按钮
这都是麻烦的地方,我们要更精益求精地修改,让我们的多选题,轻易地从两题变成10题、100题
接下来我们要做的是
* 进一步改进我们存放数据的结构
* 让我们可以动态地生成每一道题目,只需输入数据,而不需要在FLASH里面操作就可以自动生成

所以——我们需要面向对象编程!(object oriented programming)

chocobo:嘻嘻,众菜鸟是不是都倒了,AS基础教程竟然开始讲OOP了,呵呵,没关系啊,上面的教程一直都这么浅,以后也深不了

相关文章

最新评论