Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AS3从XML获取时间_Xml_Actionscript 3_Date_Time - Fatal编程技术网

使用AS3从XML获取时间

使用AS3从XML获取时间,xml,actionscript-3,date,time,Xml,Actionscript 3,Date,Time,我有一个基于时间显示的各种拍卖项目的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文件。我想使用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;
    }
}

}
导入flash.net.URLRequest;
导入flash.net.urloader;
导入flash.events.Event;
导入flash.text.TextFormat;
var xmlData:XML=newxml();
var theURL_ur:URLRequest=newurlrequest(“sample_auction.xml”);
var-loader\u-ul:URLLoader=新的URLLoader(theURL\u-ur);
loader_ul.addEventListener(“完成”,文件加载);
var my_date:date=新日期();
var currentHour:Number=my_date.getUTCHours()+(my_date.getUTCMinutes()/60);
跟踪(当前小时);
已加载函数文件(e:事件):void
{
xmlData=XML(加载器数据);
for(var i:uint=0;i
我是否需要从xml中声明不同的时间,比如每次执行一个var之类的?我如何获得它,以便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>

6:00
示例拍卖1
占位符文本等等。
sampleimage1.jpg
7:00
示例拍卖2
占位符文本BLBABLBLDFLKNSDF
imagepath11.jpg
8:00
样本拍卖3
占位符文本asflkamdflkmasdfm
imagepath12.jpg
9:00
样本拍卖4
占位符文本blabjadsflkm afdlkmasf afmlksf mmasdflkm
imagepath12.jpg
任何帮助都将不胜感激

好的,根据下面的评论,我现在有这个:

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;
}
导入flash.net.URLRequest;
导入flash.net.urloader;
导入flash.events.Event;
导入flash.text.TextFormat;
flash.system.Security.allowDomain('*');
var xmlData:XML=newxml();
var theURL_ur:URLRequest=newurlrequest(“sample_auction.xml”);
var-loader\u-ul:URLLoader=新的URLLoader(theURL\u-ur);
loader_ul.addEventListener(“完成”,文件加载);
var my_date:date=新日期();
var currentHour:Number=my_date.getUTCHours()+(my_date.getUTCMinutes()/60);
跟踪(当前小时);
已加载函数文件(e:事件):void
{
xmlData=XML(加载器数据);
for(var i:uint=0;i=currentHour);
对于每个(变量项:启动中的XML)
{
auctionName_txt.text=xmlData.auction[i].标题;
auctionDesc_txt.text=xmlData.auction[i].说明;
}       
}
}
函数解析时间(时间:字符串):数字{
var hour:int=time.split(“:”[0];
变量分钟:int=time.split(“:”[1];
返回小时+分钟/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;
}
导入flash.net.URLRequest;
导入flash.net.urloader;
导入flash.events.Event;
导入flash.text.TextFormat;
flash.system.Security.allowDomain('*');
var xmlData:XML=newxml();
var theURL_ur:URLRequest=newurlrequest(“sample_auction.xml”);
var-loader\u-ul:URLLoader=新的URLLoader(theURL\u-ur);
loader_ul.addEventListener(“完成”,文件加载);
var my_date:date=新日期();
var currentHour:String=my_date.getUTCHours()+“:“+my_date.getUTCMinutes();
跟踪(当前小时);
已加载函数文件(e:事件):void
{
xmlData=新的XML(加载程序数据);
var已启动:XMLList=xmlData.auction(parseTime(time)
-您将获得HH:MM格式的UTC时间

trace(xml.auction.(time == currentHour))
将跟踪“时间”标记值==currentHour的节点


但在你的情况下,我们是在比较时间。 确保解析xml时间值并以正确的方式将其转换为数字

您的fileLoaded函数应如下所示:

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; 
    }       
}
或者如果您的XML时间是您的本地时间

function parseTime(time:String):Number {
    var hour:int = time.split(":")[0];
    var minute:int = time.split(":")[1];
    return hour + minute / 60;
}
function parseTime(time:String):Number {
    var hour:int = time.split(":")[0];
    var minute:int = time.split(":")[1];
    var date:Date = new Date();
    date.setHours(hour);
    date.setMinutes(minute);
    return date.getUTCHours() + date.getUTCMinutes() / 60
}

那么,trace语句是否符合我的“if”条件?而不是我现在拥有的?如何将数据的显示限制在节点的特定时间段内(即一小时)?对多条注释表示歉意-因此这会从最后一个节点提取数据-如果我将trace语句置于if条件中-将时钟设置为什么时间似乎无关紧要-它始终会提取相同的节点。还有什么秘诀吗?:):)parseTime函数是否依赖于UTC时间?这似乎现在显示的是第一个节点而不是最后一个节点,奇怪的是,它在舞台上显示的文本中显示了xml标记。。谢谢你迄今为止的帮助!不客气。它与XML提供的时间有关,您应该根据收到的数据手动进行比较。您可以在这一行中更改比较逻辑:parseTime(time)=并且它只运行到XML的最后一个节点,而不管发生什么-在上面为(var i:uint=0;i对于每个(var item:XML in start){auctionName_txt.text=xmlData.auction.title;auctionDesc_txt.text=xmlData.auction.description;}来显示吗?这就产生了第一个节点,而不是最后一个节点——这似乎是因为
function parseTime(time:String):Number {
    var hour:int = time.split(":")[0];
    var minute:int = time.split(":")[1];
    var date:Date = new Date();
    date.setHours(hour);
    date.setMinutes(minute);
    return date.getUTCHours() + date.getUTCMinutes() / 60
}