1

タイマーで画像を更新しようとしています。一度にアップロードできる画像は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ファイルがあり、同じ画像を1つずつ繰り返しロードしていると仮定します。

于 2012-11-09T04:12:36.697 に答える