1

我正在尝试通过计时器更新图像。我一次只能上传一张图片。如果我要删除图像并上传另一张图像。然后我的应用程序应该实时更新到最新的图像。由于某种原因,它没有读取我的 newUpdate 函数。“newUpdate”函数应该比较 xml,如果 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);
}
4

2 回答 2

0

我认为您没有提供足够的上下文来回答这个问题,因为这行:

if (imageList != xmlData.sectionItem.file)

由于这条线,永远不会真正:

imageList = xmlData.sectionItem.file;

请解释加载初始 XML 数据后 xmlData 或 imageList 在什么时候以及为什么会改变值。

...也许这就是问题所在?

于 2012-11-09T01:31:01.507 回答
0

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

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

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

于 2012-11-09T04:12:36.697 回答