- ·上一篇教程:全代码实现模拟时钟
- ·下一篇教程:AutoCAD教程:机械异形体的建模过程
FLASH+xml构建图片轮播效果
网上很多类似的FLASH文件,但一些FLASH基本上是直接搞在了FLASH里面,不太方便更新啊。这里把如何加载XML,解析XML里面的图片,然后生成动态效果写一下。希望能给大家带来一定的帮助。
演示地址:
http://www.taoshaw.com/taoshaw/study/text_dong/index.htm
这种效果,大部分采用遮照,遮照其实不是很难。这里有一个难点主要是加载图片,以及解析XML。其他的都比较简单。
OK,看看过程吧。
1、将FLASH文件大小设为800*230,这里主要是根据你想让FLASH占多大的广告来决定的。比如你FLASH希望大一点,就可以大一些。相反呢,就可以设小一点。把背景设成黑色,然后把帧频改为60。这里就不多说了,主要是考虑动画的流畅性。
2、创建一个新元件“my_mc”,然后设成可以在AS中导入的。即在AS链接处打上勾。
3、然后在这里面添加代码。为的是在这里面解析外部XML,并加载XML里面的图片。
4、代码如下:
//统一编码
System.useCodepage = true;
//定义XML
var my_xml:XML = new XML();
//消除空格
my_xml.ignoreWhite = true;
//定义图片数组
var my_Arr:Array = new Array();
//加载图片类
var myCL:MovieClipLoader = new MovieClipLoader();
//设置开始位置
var begin_x:Number = 0;
var begin_y:Number = 0;
//定义变量,用于显示图片
var next_x:Number = begin_x;
var next_y:Number = begin_y;
//设置图片大小
var pic_width:Number = 670;
var pic_heigth:Number = 230;
//定义每行数量
var my_num:Number = 2;
//加载XML
my_xml.load("http://www.taoshaw.com/taoshaw/study/text_dong/MyPhoto.xml");
my_xml.onLoad = function(ok:Boolean):Void {
if (ok) {
loadStart();
} else {
}
};
//当前影片剪辑创建一个mc
this.createEmptyMovieClip("mc", this.getNextHighestDepth());
function loadStart():Void {
//定义XML长度
var my_Len:Number = my_xml.firstChild.childNodes.length;
for (var i:Number = 0; i<my_Len; i++) {
//将接收的对象写进数组
my_Arr.push(my_xml.firstChild.childNodes.attributes.src);
duplicateMovieClip(mc, "mc"+i, 3+i);
this["mc"+i]._x = next_x;
//此处是关键,用于显示加载图片后,图片在舞台中的排列
next_x += pic_width;
this["mc"+i]._y = next_y;
//此处也是关键,用于多行显示
if (((i+1)%my_num) == 0) {
next_x = begin_x;
next_y += pic_heigth;
}
myCL.loadClip(my_Arr, this["mc"+i]);
}
}这里主要用到了MovieClipLoader类,以及XML类。根据根据XML来解析。再利用前面一个来加载多幅图片。这里,让加载到场景中的元件会在不同位置处显示的方法主要用到让_x座标用一个变量代替,而这个变量呢,则不变递加来确定。而让加载的图片分多行显示,则是利用了。当XML的长度除以设定的值。如果这个值为0呢,则另外换行。另外换行的方法。就是重新设定_y的值。让_y的值再叠加。
5、再新建一个script元件。然后用于在里面添加代码。用于控制场景中MC的位置移动等。
6、然后添加代码:

演示地址:
http://www.taoshaw.com/taoshaw/study/text_dong/index.htm
这种效果,大部分采用遮照,遮照其实不是很难。这里有一个难点主要是加载图片,以及解析XML。其他的都比较简单。
OK,看看过程吧。
1、将FLASH文件大小设为800*230,这里主要是根据你想让FLASH占多大的广告来决定的。比如你FLASH希望大一点,就可以大一些。相反呢,就可以设小一点。把背景设成黑色,然后把帧频改为60。这里就不多说了,主要是考虑动画的流畅性。
2、创建一个新元件“my_mc”,然后设成可以在AS中导入的。即在AS链接处打上勾。

3、然后在这里面添加代码。为的是在这里面解析外部XML,并加载XML里面的图片。

4、代码如下:
//统一编码
System.useCodepage = true;
//定义XML
var my_xml:XML = new XML();
//消除空格
my_xml.ignoreWhite = true;
//定义图片数组
var my_Arr:Array = new Array();
//加载图片类
var myCL:MovieClipLoader = new MovieClipLoader();
//设置开始位置
var begin_x:Number = 0;
var begin_y:Number = 0;
//定义变量,用于显示图片
var next_x:Number = begin_x;
var next_y:Number = begin_y;
//设置图片大小
var pic_width:Number = 670;
var pic_heigth:Number = 230;
//定义每行数量
var my_num:Number = 2;
//加载XML
my_xml.load("http://www.taoshaw.com/taoshaw/study/text_dong/MyPhoto.xml");
my_xml.onLoad = function(ok:Boolean):Void {
if (ok) {
loadStart();
} else {
}
};
//当前影片剪辑创建一个mc
this.createEmptyMovieClip("mc", this.getNextHighestDepth());
function loadStart():Void {
//定义XML长度
var my_Len:Number = my_xml.firstChild.childNodes.length;
for (var i:Number = 0; i<my_Len; i++) {
//将接收的对象写进数组
my_Arr.push(my_xml.firstChild.childNodes.attributes.src);
duplicateMovieClip(mc, "mc"+i, 3+i);
this["mc"+i]._x = next_x;
//此处是关键,用于显示加载图片后,图片在舞台中的排列
next_x += pic_width;
this["mc"+i]._y = next_y;
//此处也是关键,用于多行显示
if (((i+1)%my_num) == 0) {
next_x = begin_x;
next_y += pic_heigth;
}
myCL.loadClip(my_Arr, this["mc"+i]);
}
}这里主要用到了MovieClipLoader类,以及XML类。根据根据XML来解析。再利用前面一个来加载多幅图片。这里,让加载到场景中的元件会在不同位置处显示的方法主要用到让_x座标用一个变量代替,而这个变量呢,则不变递加来确定。而让加载的图片分多行显示,则是利用了。当XML的长度除以设定的值。如果这个值为0呢,则另外换行。另外换行的方法。就是重新设定_y的值。让_y的值再叠加。
5、再新建一个script元件。然后用于在里面添加代码。用于控制场景中MC的位置移动等。

6、然后添加代码:


