经过一个下午的研究终于把之前写的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