FLASH加载外部变量的方法有很多种,LoadVariables就是其中一个。不过这个方法瑕疵太多,一个“&”号之后就全变空白了。所以做FLASH留言本时我们不得不用到XML。
打开记事本,输入类似以下的XML代码:
<?xml version="1.0"?><!--本行前面不要留空格-->
<gbook>
<pagecount>10</pagecount>
<items>
<item>
<name>冰灼</name>
<msg><新年快乐!></msg>
</item>
<item>
<name>张三丰</name>
<msg>啊!降龙十八掌!</msg>
</item>
<item>
<name>小泉纯一狼</name>
<msg>我承认我是乱伦生来的</msg>
</item>
</items>
</gbook>
然后保存,编码选"UTF-8",至于保存成什么文件,".asp",".htm",".txt"都可以,这里保存为"test.xml".
新建FLA文档,保存为"test.fla"与"test.xml"同一目录下.然后在"test.fla"的主场景第一帧输入:
var x=new XML();//新建XML对象
x.ignoreWhite=true;//忽视空格
x.load("test.xml")
x.onLoad=function(success){//请保持此格式
if(success){
trace(x.firstChild.lastChild.firstChild.lastChild.firstChild);
}else{
trace("fail to load!")
}
};
测试看看输出了什么,是"<新年快乐!>".呵呵不错吧,"&"后面的东西都在.
下面结合上面的例子解释一下XML对象的各方法.(根对象为上例中的x,即整个XML文档)
1. x.firstChild
返回x的第一个子对象,从"<gbook>"到"</gbook>"(包括<gbook>)之间的所有字符,返回类型也是一个XML对象
2. x.lastChild
返回x的最后一个子对象,可是整个XML文档只能有一个顶层元素,所以对x来说,firstChild和lastChild都返回同一个对象
3. x.childNodes
返回以x的所有子对象为元素的数组,因为x只有一个子对象"<gbook>……</gbook>",所以这句返回的数组长度是1.若是令y=x.firstChild.childNodes,则返回gbook下的两个子节点pagecount和items组成的数组.其中y[0]是<pagecount>10</pagecount>;y[1]是<items>到</items>间的所有字符.
4. 按上文,x.firstChild.lastChild是gbook下的items成对标记(包括<items>)之间的部分;x.firstChild.lastChild.firstChild是items下的第一个item成对标记之间的部分,即
<item>
<name>冰灼</name>
<msg><新年快乐!></msg>
</item>
接着,x.firstChild.lastChild.firstChild.lastChild是item下的最后一个成对标记之间的部分“<msg><新年快乐!></msg>”.到这里,返回类型一直都是XML节点,然后再往下:x.firstChild.lastChild.firstChild.lastChild.firstChild就是节点中的字符串"<新年快乐!>"(注:此字符串以XML对象形式返回,请和下句nodeValue区别)
5. x.nodeValue
这个主要返回XML对象的值,返回类型为字符串.比如上文中的"pagecount",可以用x.firstChild.firstChild.firstChild得到,但是这样得到的是一个XML对象10,不能用于数字间的运算.所以要用x.firstChild.firstChild.firstChild.nodeValue得到其字符串值pagecount,再用Number(pagecount)转化为数字.
6. x.nodeName
返回节点名,即上文中的成对标记的关键字gbook,pagecount,items等等.
常用标记就介绍到此,如有不明,请与我联系。