第十章:第三个版本的选择题
首先,此版本沿用了上一版本的函数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了,呵呵,没关系啊,上面的教程一直都这么浅,以后也深不了
出处:蓝色理想
责任编辑:qhwa
上一页 数组(arrays) 下一页 一点面向对象编程知识
◎进入论坛Flash专栏版块参加讨论
|