现在的位置: 首页 > 综合 > 正文

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

2013年09月11日 ⁄ 综合 ⁄ 共 2238字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.