※ ChatGPTを利用し、要約された質問です(原文:タイマー実行ごとにtraceの出力回数が増えていく)
タイマー実行ごとにtraceの出力回数が増えていく
このQ&Aのポイント
ActionScript3でXMLファイルをロードし、2秒間隔で配列の中身をロードしています。ロード完了後、traceで画像読み込み完了のメッセージを出力しています。しかし、タイマーを実行するごとに出力回数が増えてしまいます。
タイマーを実行するたびに「画像読み込み完了」が増えていく理由は何でしょうか?
ご教授いただけると助かります。初歩的な内容かもしれませんが、お願いします。
タイマー実行ごとにtraceの出力回数が増えていく
こんばんは。
ActionScript3で以下の処理を作成しました。
XMLファイルをロード、中身を配列に入れ終わったらタイマーを起動し、
2秒間隔で配列の中身をロード、ロード完了後にtraceで読み込み完了のメッセージを出力
という内容です。
上記の処理を下記に記載して実行した所、2秒間隔で処理は実行されますが、
traceしている"画像読み込み完了"の出力がタイマーを実行するごとに数が増えて表示されます。
1回目のタイマーでは"画像読み込み完了"が一回だけ表示され、
2回目は"画像読み込み完了""画像読み込み完了"と二回表示、
以降回数の分だけ"画像読み込み完了"が出力されます。
なぜこのような動きになるのでしょうか?
とても初歩的な内容だと思いますが、ご教授いただけると幸いです。
↓以下ソース
// タイマー
var slideTimer:Timer=new Timer(2000,0);
// 外部XMLファイルロード
var sample_xml:XML=new XML();
var xmlLength_num:Number;
var xmlLoader:URLLoader = new URLLoader();
var dataArr:Array = new Array();
var largeLoader:Loader = new Loader();
var count:Number = 0;
xmlLoader.addEventListener(Event.COMPLETE, completeXMLHandler);
xmlLoader.load(new URLRequest("xml/file.xml"));
function completeXMLHandler(event:Event) {
var local_xml:XML = new XML(event.target.data);
sample_xml = local_xml;
xmlLength_num = sample_xml.image.length();
for(var i:Number = 0; i < xmlLength_num; i++) {
dataArr.push(sample_xml.data[i]);
}
slideTimer.start();
}
// タイマー処理
slideTimer.addEventListener(TimerEvent.TIMER, slideStart);
function slideStart(event:Event):void {
var largeRequest:URLRequest=new URLRequest(dataArr[count]);
largeLoader.load(largeRequest);
largeLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dataCompleteHandler);
function dataCompleteHandler(event:Event) {
trace("画像読み込み完了");
count++;
}
}
お礼
おはようございます。 迅速なご回答、またご丁寧にご解説いただきありがとうございます。 昨日は上記の動きが理解できずに悩んでおりましたが、お陰様で解決されました。