FlashAS基础精典教程(9)
2008-04-02 11:06:09来源:互联网 阅读 ()
// 然后问题输入MC的qText文本框中
questionClip.qText = questionsArray[currentQuestion].questionText;
// Create the individual answer clips in the question clip
// 以下循环将结合选项模版生成这一条题目的各个选项的MC
// questionsArray[currentQuestion].answers记得吗?选项这个属性可是个数组,所以我们把他的长度作为循环的次数,这个数组有多大,我们就生成多少个选项
for (var j = 0; j < questionsArray[currentQuestion].answers.length; j ) {
// Attach our linked answerTemplate clip from the Library.
// It contains a generalized button and a text field for the question.
// 用answerTemplate做模版生成MC,MC名为"answer" j ,即第一个选项MC名为answer0,第二个为answer1,选项的名字可是关系到按钮选什么的,假如您忘了,看看上面有 @@ 标记的地方
// 同时他们的深度为j,每次不同
// 但和上面不同的是,我们要把选项MC生成到题目MC里,这样我们清除题目MC的同时也清除了选项
// 所以写成questionClip.attachMovie
questionClip.attachMovie("answerTemplate", "answer" j, j);
// Place this answer clip in line below the question.
// 设定MC的位置,第一个高度为70,之后顺序加15
questionClip["answer" j]._y = 70 (j * 15);
questionClip["answer" j]._x -= 100;
// Set the text field in the answer clip to the appropriate
// element of this question's answer array.
// 下面语句的:questionClip["answer" j]可不是指数组,j=0的时候,他代表questionClip.answer0,具体解释可见上一章。
// 这句语句的作用是把questionsArray[currentQuestion]这个对象数组里面的answers[j]数组,输入到对应的选项MC的answerText文本框中,就是该选项的内容
questionClip["answer" j].answerText = questionsArray[currentQuestion].answers[j];
}
//生成选项的循环结束
}
// Function to register the user's answers
// 以下是记录答题者答案的函数,记录在数组userAnswers中,和上一例同
// 每一个选项假如被选都会调用此函数,并用参数choice传来作答的答案
function answer (choice) {
userAnswers.push(choice);
// 判断是否题目全部完成,是的话清楚掉题目MC,并跳转到quizEnd帧
if (currentQuestion 1 == questionsArray.length) {
questionClip.removeMovieClip();
gotoAndStop ("quizEnd");
} else {
// 在这里改变题目的编号,然后调用makeQuestion函数再次生成新的题目
currentQuestion ;
makeQuestion(currentQuestion);
}
}
// Function to tally the user's score
// 改题的函数
function gradeUser() {
// Count how many questions the user answered correctly
for (var j = 0; j < questionsArray.length; j ) {
// 将答题数组userAnswers[j]和问题数组questionsArray[j]的属性correctAnswer逐个比较
if (userAnswers[j] == questionsArray[j].correctAnswer) {
totalCorrect ;
}
}
// Show the user's score in an onscreen text field
// 显示答对和题目数比
displayTotal = totalCorrect "/" questionsArray.length;
}
好了,我们来总结一下这个例子吧
我们已完成了第三个版本结束时候定下来目标,更快捷的建设,更便易的扩展
我们的题目跟选项都是动态生成的,也就是说生成10、100题或更多题目也只需要修改questionsArray.as这个文档就能够了
假如说生成两题这个例子用时要长于上面的例子,那么生成100题,您会发现用这个例子将是最快的。更有,在100题里面修改其中一题,也是最快的。
看完了例子,希望大家不是只明白了代码的含义,最重要是理解运用对象来编程的方法
同样的例子,其实还能够用其他的对象结构来完成的
更有效地组织数据也是编程艺术的一部分
为了更进一步改进我们的例子,最后一个,就是第五个版本,将用XML代替那个存放对象的数组(也就是在questionsArray.as里那个),他实在太难懂了,是不是啊?呵呵
XML,名字是不是很COOL啊,其实,FLASH里面用XML不难(其他地方的应用就……所以千万别说XML不难,是FLASH里面用不难),呵呵,好吧,开始吧。
第十三章 XML
XML是一种标记语言,通常用于储存,组织和传输数据,XML文档主要由一系列的元素(elements)和属性(attributes)组成,看下面一个XML的例子:
Colin Moock
O'Reilly
这个例子就是由元素 BOOK, TITLE, AUTHOR, PUBLISHER 组成的。在元素里就包含了一个属性:SALUTATION 这些元素怎么让浏览器解释是什么意思呢?他需要DTD,一套决定这些标记的意义的规则。(例如我们常听说的WML、SVG,他们都是XML,但对应不同的DTD)
XML和HTML想比需要格式更严格,格式需要:
* tags 一定要嵌套 (就是说有就一定要有)
* 一定要有一个根元素 (例如例子中的 BOOK)
* 开始部分要用XML声明标记 :
但是AS里面的XML无需DTD(这就是我说FLASH里面用XML不难的原因,哈哈)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 使用钢笔工具绘制曲线路径
下一篇: 拖拽动作连同碰撞动作周详讲解
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
