FlashAS基础精典教程(11)
2008-04-02 11:06:09来源:互联网 阅读 ()
var quizNode = quizDoc.childNodes
// for each question node that is a child of the QUIZ node...
// 下面的循环将逐个提取QUIZ节点的子节点,即每条题目
for(var k = 0; k < quizNode.childNodes.length; k ) {
// make an array of the text nodes from each CHOICE node
// 为每条题目建立一个选项数组
var choicesArray = new Array();
// 下面的循环则是将题目的子节点,即各选项的nodevalue输入到choicesArray数组中
for(var j = 0; j < quizNode.childNodes[k].childNodes.length; j ) {
choicesArray[j] = quizNode.childNodes[k].childNodes[j].firstChild.nodevalue;
}
// construct a question object for each QUESTION node,
// and store it in questionsArray
// 用题目正文、选项数组、正确答案(正确答案现在还是字符串,所以用Number函数将之转为数字)作为参数,建立Question对象(定义Question对象的代码已在上个例子中解释了)
// 将新建的Question对象作为questionsArray数组的一个元素
questionsArray[k] = new Question (
Number(quizNode.childNodes[k].attributes.answer),
quizNode.childNodes[k].attributes.text,
choicesArray);
}
// done loading and processing the quiz questions
loadMsg = "";
// begin the quiz
// 调用函数makeQuestion,之后的进度就同上一个例子了
makeQuestion(currentQuestion);
}
// *** Strips whitespace nodes from an XML document. // *** by passing twice through each level in the tree
// 下面函数用于除去无用的空白节点,参数是需要处理的XML的根元素(我们已将其指名为XMLnode了)
function stripWhitespaceDoublePass(XMLnode) {
// Loop through all the children of XMLnode
// 循环依次将根元素的子元素提取出来
for (var k = 0; k < XMLnode.childNodes.length; k ) {
// If the current node is a text node...
// 假如该节点是个文本节点,就开始以下检查 ...
if(XMLnode.childNodes[k].nodeType == 3) {
// ...check for any useful characters in the node.
var j = 0;
var emptyNode = true;
for(j = 0;j < XMLnode.childNodes[k].nodevalue.length; j ) {
// A useful character is anything over 32 (space, tab,
// new line, etc are all below).
// 因为空格、TAB或换行等空白无意义字符的ASCII码都小于32,检查若大于32,即为有数据的节点,同时用break;跳出检查的循环
if(XMLnode.childNodes[k].nodevalue.charCodeAt(j) > 32) {
emptyNode = false;
break;
}
}
// If no useful charaters were found, delete the node.
// 若该节点没有数据,就是解释时的错误,将其删除
if(emptyNode) {
XMLnode.childNodes[k].removeNode();
}
}
}
// Now that all the whitespace nodes have been removed from XMLnode,
// call stripWhitespaceDoublePass on its remaining children.
// 但是还没完,我们只检查了任何子节点,而没有检查子节点的子节点,所以以下的循环将任何子节点也送到本函数再继续检查
// 这种函数自己调用自己的方法,称为递归,他将一直检查子节点的子节点的子节点的……一直到该节点没有子节点为止
for(var k = 0; k < XMLnode.childNodes.length; k ) {
stripWhitespaceDoublePass(XMLnode.childNodes[k]);
}
}
现在,我们能够把SWF和XML组成的题目交给一个不会编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
