您的位置:首页 > 其它

每天学一点flash (32) as 3.0 结合xml 制作走马 灯效果

2012-02-15 21:21 543 查看
经过一个下午的研究终于把之前写的as 2.0的 走马灯 从新用as 3.0 写过一次了 真是遇见了好多的问题,特别是loader 类 添加子显示对象的时候花费了一段时间来找答案。最后使用用数组的帮助下终于完成了。

遇到问题

第一怎样解决 多个 loader 显示对象?

第二怎样显示 外部加载多个图片(不是一个)?

第三怎样使用数组的push的方法? 怎样用数组结合xml 使用?

第四怎样复制多个影片剪辑,没有duplicateMovieClip 和attachMovie 的情况下?

第五 怎样理解xml 和xmlist 类? 怎样遍历xml读取数据

第六 怎样使图片运动?

下面是源代码:

System.useCodePage=true;
var movetime:Timer=new Timer(50);//利于时间来对影片剪辑进行运动
var speed:int=20;
var myxml:XML=new XML();
var mylist:XMLList=new XMLList();
myxml.ignoreWhite = true;

var list:Array=new Array();//装载图片的名称
var imgArray:Array=new Array();//多个loader
var picArray:Array=new Array();//装载多个复制的影片
var _loader:URLLoader=new URLLoader();//加载xml文件
_loader.load(new URLRequest("menu.XML"));
_loader.addEventListener(Event.COMPLETE,loading);

var pic:picture;

function loading(event:Event):void{
myxml=XML(_loader.data);
mylist=myxml.children();

movetime.addEventListener(TimerEvent.TIMER,moveing);
for(var j:int=0;j<7;j++)
{
pic=new picture();
picArray.push(pic);
addChild(picArray[j]);
picArray[j].x=j*picArray[j].width;// 复制每一个影片剪辑

}

function moveing(event:TimerEvent):void{
for(var t:int=0;t<7;t++)
{
picArray[t].x-=5;
if(picArray[t].x<-88)
{
picArray[t].x=6*88;
}

}

}

movetime.start();//开始执行图片运动

for(var i:int=0;i<mylist.length();i++)
{
list[i]=mylist.attribute("url")[i];
var ld:Loader=new Loader();//加载图片用
imgArray.push(ld);//管理多个loader 对象
imgArray[i].load(new URLRequest(list[i]));
picArray[i].addChild(imgArray[i]);
}

}

过程:

xml文件

<?xml version="1.0" encoding="gb2312"?>
<item>
<menuname url="photo/1.jpg"/>
<menuname url="photo/2.jpg"/>
<menuname url="photo/3.jpg"/>
<menuname url="photo/4.jpg"/>
<menuname url="photo/5.jpg"/>
<menuname url="photo/6.jpg"/>
<menuname url="photo/7.jpg"/>
</item>

图片的格式规定为 88x 105

在场景上建立大小为:528x105 大概可以显示六张图片,预留一个位置

核心的地方:

list[i]=mylist.attribute("url")[i];
var ld:Loader=new Loader();//加载图片用
imgArray.push(ld);//管理多个loader 对象
imgArray[i].load(new URLRequest(list[i]));
picArray[i].addChild(imgArray[i]);

利用数组来 实验多个loader对象,因为Loader 类会覆盖其继承的以下方法,因为 Loader 对象只能有一个子显示对象 -- 其加载的显示对象

所以我们要多个对象实验加载。那么就需要数组去实验这个功能了



这一段是复制 多个影片剪辑的正好解决了没有attachMovie 的方法。利用循环new 创建

多个 影片剪辑

for(var j:int=0;j<7;j++)
{
pic=new picture();
picArray.push(pic);//关键是这里面处理多个影片剪辑
addChild(picArray[j]);
picArray[j].x=j*picArray[j].width;// 每一个影片剪辑定位

}

就这样了 好苦啊 闪

下载地址:

http://dl2.csdn.net/down4/20080130/30172650324.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: