我正在尝试通过计时器更新图像。我只能上传一张图片。如果我要删除图像并上传另一张图像。然后我的应用程序应该实时更新到最新的图像。由于某种原因,它没有读取我的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);
}
答案 0 :(得分:0)
第一次,imageList
和xmlData
都是null
。他们既没有实例化也没有分配。所以两者在那一刻是平等的,因为你的条件,newScreensaver()
不会执行。
我的建议是首先加载xml
,一旦加载开始加载图像并保存。如果您这样做了,您将重用(clone
)它,并且您不必每次都等待图像加载。加载完所有图像后,启动计时器。如果你有更多的图像,那么在完成加载的几张(比如说3或5张)图像后启动你的计时器。
注意:假设您有一个包含所有图像名称的xml文件(比如5个图像名称/路径)并重复逐个加载相同的图像。