| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
如何加入透明Flas
为新浪博客添加fl
flashget下载联盟
265联盟:“Flash
新易网络提供100M
龙太极/100m/asp/
无限网络提供50M 
霞光科技50M/Htm/
苏能科技100M/FTP
悠博科技50M/FTP/

完全AS由浅入深教程(下)           

完全AS由浅入深教程(下)

作者:佚名 来源:作者: davidwmy 更新:2007-1-13 20:48:13 错误报告 我要投稿

第八章 第二个版本选择题的制作
 读到这你发现什么,我是发现了,MOOCK不是在教AS,他简直是在上编程课。 
 在第一个版本的制作里你发现了什么缺点?是的,输入了很多次AS,很麻烦。
 我们要做的是用函数来集中我们的代码,只有集中了才好修改,越复杂的程序越是如此(想象一下在很多个MC之间查代码,真是头痛,当然是集中一块好)
 这个多选题,我们就归结成两个函数吧answer和gradeUser 

 代码(可以直接看源程序,在上面地址那个ZIP里面的quiz-version2.fla):
 大部分的代码都被集中到第一帧了,千万不要被一大堆代码吓着了,代码这么长,只是为了让阅读者看得更清楚而已。(其实越短的代码才越可怕呢,呵呵)
 // Stop the movie at the first question
 stop (); 

 // Initialize main timeline variables 定义变量
 var displayTotal; // Textfield for displaying users score
 var numQuestions = 2; // Number of quiz questions
 var q1answer; // Users answer for question1
 var q2answer; // Users answer for question2
 var totalCorrect = 0; // Number of questions answered correctly 以上和例一一样
 var correctAnswer1 = 3; // The correct choice for question 1 第一题的正确答案
 var correctAnswer2 = 2; // The correct choice for question 2 第二题的正确答案 

 // Function to register users answers 这个函数的功能是提交答题者的答案
 function answer (choice) {
 answer.currentAnswer++; 
 //现在answer.currentAnswer是1,正在提交的是第一题,下一次answer.currentAnswer就变成2,代表提交的是第二题
 set ("q" + answer.currentAnswer + "answer", choice); 
 // 不复杂不复杂,"q" + answer.currentAnswer + "answer"第一题的时候就是q1answer,第二题是q2answer,把参数choice传过来的值放到两个变量里面而已
 if (answer.currentAnswer == numQuestions) { 
 // 判断是不是两题都答完了,是就转到问题结束帧
 gotoAndStop ("quizEnd");
 } else {
 gotoAndStop ("q" + (answer.currentAnswer + 1));
 }
 } 

 // Function to tally users score 这个函数是改题的
 function gradeUser() {
 // Count how many questions user answered correctly 将两个答案和正确答案比较,对就totalCorrect加一
 //此处用了一个for循环,大家如有疑问的,可以查AS字典,在帝国就有中文版
 for (i = 1; i <= numQuestions; i++) {
 // 下面用的eval有必要说一下,它的作用是将字符串和变量组成一个新的变量名,是个很方便的功能
 if (eval("q" + i + "answer") == eval("correctAnswer" + i)) {
 totalCorrect++;
 }
 } 

 // Show users score in an on-screen text field 将答案显示出来,与第一个例子同
 displayTotal = totalCorrect;
 } 

 
 好了,第一帧的函数写好了,之后每个答案的选择按钮就简单了
 例如第一题的选项一,就写:
 on (release) {
 answer(1);
 } 
 第二题的写法同上(如果你的选择题有很多道,做法都是一样的,只要复制第一题,然后把题目改了就行)
 最后在quizEnd帧里面调用改题的函数gradeUser(); 

 分析第二个例子是代码,你会发现比第一个例子精简了很多。 

 而集中在同一帧的代码,将:
 * 更容易修改
 * 更容易升级
 * 更少的出错机会
 * 更容易查错
 * 更精简(更少的字节数)

 
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。