定时器使用as3更新图像

时间:2012-11-08 22:00:36

标签: xml actionscript-3 flash

我正在尝试通过计时器更新图像。我只能上传一张图片。如果我要删除图像并上传另一张图像。然后我的应用程序应该实时更新到最新的图像。由于某种原因,它没有读取我的newUpdate函数。如果xml文件不匹配,“newUpdate”函数应该比较xml然后重新加载图像。我的更新功能需要帮助。也许我的更新功能的逻辑是错误的,任何帮助将不胜感激。谢谢

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML;
var imageList:XMLList;
var imageLoader:Loader = new Loader();
var imageIndex:uint = 0;
var child:DisplayObject;
var timer:Timer =new Timer(3000,0);
var myImageHolder = new ImageHolder();

addChild(myImageHolder);
myImageHolder.x= 0;
myImageHolder.y= 0;

function newUpdate(e:TimerEvent) {
      if (imageList != xmlData.sectionItem.file) {
    newScreensaver();
    } 
}

function newScreensaver() {
xmlLoader.load(new URLRequest(path +"metv.xml"));
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
addChild(videoTxt);
}

function xmlLoaded(e:Event) {
xmlData = new XML ( e.target.data);
imageList = xmlData.sectionItem.file;
loadImage(path + imageList[0]);
}

function imageLoaded(e:Event){
child = myImageHolder.addChild(imageLoader);
}

function loadImage(path:String){
imageLoader.load(new URLRequest( path));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,imageLoaded);
}

1 个答案:

答案 0 :(得分:0)

第一次,imageListxmlData都是null。他们既没有实例化也没有分配。所以两者在那一刻是平等的,因为你的条件,newScreensaver()不会执行。

我的建议是首先加载xml,一旦加载开始加载图像并保存。如果您这样做了,您将重用(clone)它,并且您不必每次都等待图像加载。加载完所有图像后,启动计时器。如果你有更多的图像,那么在完成加载的几张(比如说3或5张)图像后启动你的计时器。

注意:假设您有一个包含所有图像名称的xml文件(比如5个图像名称/路径)并重复逐个加载相同的图像。