引言

上一篇教程明河讲解了如何使用actionscript3.0构建滚动条,代码难度不大,接下来的代码会不断加大难度,今天明河主要讲解如何使用actionscript3.0读取和处理xml(明河已经在代码内加了非常详实的中文注释,所以这里只讲述关键代码和思路)。
使用actionscript3.0读取和处理xml
1、创建xml
原英文教程,是使用php生成xml,这里明河做了简化,直接使用一个静态xml,请看示例包(点此进入第一篇教程下载)中test.xml
创建类似的xml结构:
- <xml>
- <img>data/9dian.png</img>
- .......
- </xml>
img标签内包含的是图片路径,测试图片存放在示例包中的data文件夹。
2、读取xml
一、打开lib.Gallery
二、定义变量
- //图片集数据路径
- private var backend:String = "test.xml";
- //xml数据读取器
- private var xmlLoader:URLLoader = new URLLoader;
- //XML数据
- private var xdata:XML;
三、读取xml,并监听完成事件
在构造函数加入如下代码
- //加载xml
- xmlLoader.load(new URLRequest(backend));
- //监听完成事件
- xmlLoader.addEventListener(Event.COMPLETE,loadImages);
这里明河要提醒下,由于xml文件和图片数据就在项目文件夹下,不牵涉到跨域访问的问题,在实际应用中,必然会遇到安全沙盒的问题,如何解决跨域访问,这里明河不详述,可以点此查看这篇文章做个参考。
3、处理xml
一、定义图片剪辑数组变量
- //图片数组
- public var images:Array = new Array();
二、来看loadImages函数
loadImages当在读取完xml后执行
- private function loadImages(_e:Event):void{
- xdata = new XML(_e.target.data);
- var i:Number = 0;
- //遍历xml
- for each(var img:XML in xdata.img){
- //创建图片剪辑实例
- images[i] = new Img(img,this);
- //设置图片剪辑位置
- images[i].x = 200 * i;
- images[i].id = i;
- i++;
- }
- }
最关键部分:
- //创建图片剪辑实例
- images[i] = new Img(img,this);
这里的数组存储的不是图片,而是图片剪辑对象。Img类是MovieClip的子类,接受二个参数,第一个为图片路径,第二个为主文档对象。
图片和图片剪辑务必区分开,图片剪辑对象包含有图片和图片名二个子对象。
- //设置图片剪辑位置
- images[i].x = 200 * i;
- images[i].id = i;
设置图片剪辑的x轴位置和id(id即是数组的索引值)
Img类将在下一期教程中详解。

