時間に基づいて表示されるさまざまなオークション アイテムの XML ファイルがあります。AS3 を使用して、XML ファイルのフィールドに設定された時間に基づいて UTCDate を取得し、適切な XML ノードを表示したいと考えています。私は AS3+XML のほぼ中級者なので、助けを借りることができます。すべての設定が完了しましたが、何かが正しくありません。
AS3 コード:
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;
import flash.text.TextFormat;
var xmlData:XML = new XML();
var theURL_ur:URLRequest = new URLRequest("sample_auction.xml");
var loader_ul:URLLoader = new URLLoader(theURL_ur);
loader_ul.addEventListener("complete", fileLoaded);
var my_date:Date = new Date();
var currentHour:Number = my_date.getUTCHours() + (my_date.getUTCMinutes() / 60);
trace(currentHour);
function fileLoaded(e:Event):void
{
xmlData = XML(loader_ul.data);
for(var i:uint = 0; i < xmlData.auction.length(); i++)
{
if(xmlData.auction[i].time < currentHour)
{
auctionName_txt.text = xmlData.auction[i].title;
auctionDesc_txt.text = xmlData.auction[i].description;
}
}
}
毎回varを実行するなど、xmlからさまざまな時間を宣言する必要がありますか? 時間ノードが実際の時間であることを AS3 が認識できるようにするにはどうすればよいですか? サンプルの XML コードを次に示します。(また、私はまだイメージを呼び出していませんが、最初に適切なノードを読み取らせようとしています。)コンパイラエラーをスローしていませんが、まだ何をすべきかわかりません。
XML コード:
<auctionlist>
<auction>
<time>6:00</time>
<title>Example Auction 1</title>
<description>Placeholder Text blah blah.</description>
<image>sampleimage1.jpg</image>
</auction>
<auction>
<time>7:00</time>
<title>Example Auction 2</title>
<description>Placeholder text blbalblbladflknsdf</description>
<image>imagepath11.jpg</image>
</auction>
<auction>
<time>8:00</time>
<title>Sample Auction 3</title>
<description>Placeholder text asflkamdflkmasdfm</description>
<image>imagepath12.jpg</image>
</auction>
<auction>
<time>9:00</time>
<title>Sample Auction 4</title>
<description>Placeholder text blabjadsflkm afdlkmasf afmlksf mmasdflkm</description>
<image>imagepath12.jpg</image>
</auction>
どんな助けでも大歓迎です。
以下のコメントに基づいて、私は今これを持っています:
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;
import flash.text.TextFormat;
flash.system.Security.allowDomain('*');
var xmlData:XML = new XML();
var theURL_ur:URLRequest = new URLRequest("sample_auction.xml");
var loader_ul:URLLoader = new URLLoader(theURL_ur);
loader_ul.addEventListener("complete", fileLoaded);
var my_date:Date = new Date();
var currentHour:Number = my_date.getUTCHours() + (my_date.getUTCMinutes() / 60);
trace(currentHour);
function fileLoaded(e:Event):void
{
xmlData = XML(loader_ul.data);
for(var i:uint = 0; i < xmlData.auction.length(); i++)
{
var started:XMLList = xmlData.auction.(parseTime(time) >= currentHour);
for each (var item:XML in started)
{
auctionName_txt.text = xmlData.auction[i].title;
auctionDesc_txt.text = xmlData.auction[i].description;
}
}
}
function parseTime(time:String):Number {
var hour:int = time.split(":")[0];
var minute:int = time.split(":")[1];
return hour + minute / 60;
}
これは、時計を何時に設定しても、最後のノードを返します。これは近いと言えますが、ノード時間に限定されず、最後までループしているようです。
更新しました
これが最新のコードです。現在、データは生成されませんが、コンパイラ エラーはスローされません。クロックが何に調整されているかは問題ではありません:
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;
import flash.text.TextFormat;
flash.system.Security.allowDomain('*');
var xmlData:XML = new XML();
var theURL_ur:URLRequest = new URLRequest("sample_auction.xml");
var loader_ul:URLLoader = new URLLoader(theURL_ur);
loader_ul.addEventListener("complete", fileLoaded);
var my_date:Date = new Date();
var currentHour:String = my_date.getUTCHours() +":" + my_date.getUTCMinutes();
trace(currentHour);
function fileLoaded(e:Event):void
{
xmlData = new XML(loader_ul.data);
var started:XMLList = xmlData.auction.(parseTime(time) < currentHour);
for each (var item:XML in started)
{
auctionName_txt.text = item.title;
auctionDesc_txt.text = item.description;
}
}
function parseTime(time:String):Number {
var hour:int = time.split(":")[0];
var minute:int = time.split(":")[1];
return hour + minute / 60;
}