Actionscript 如何将变量与数组中的条目进行比较
这是我的问题 我正在用flash做一个小天气网络应用程序。 因此,我读取了一个xml提要,并从中复制了一个数据数组 我的xml是这样的Actionscript 如何将变量与数组中的条目进行比较,actionscript,actionscript-2,Actionscript,Actionscript 2,这是我的问题 我正在用flash做一个小天气网络应用程序。 因此,我读取了一个xml提要,并从中复制了一个数据数组 我的xml是这样的 <xml> <prevision> <date>22</date> <hour>5</hour> <temperature>40</temperature> </prevision> <prevision> <date>22<
<xml>
<prevision>
<date>22</date>
<hour>5</hour>
<temperature>40</temperature>
</prevision>
<prevision>
<date>22</date>
<hour>10</hour>
<temperature>44</temperature>
</prevision>
<prevision>
<date>22</date>
<hour>14</hour>
<temperature>45</temperature>
</prevision>
<prevision>
<date>22</date>
<hour>20</hour>
<temperature>37</temperature>
</prevision>
</xml>
22
5.
40
22
10
44
22
14
45
22
20
37
下面是我用ActionScript2所做的
//**************************************
// Here i'm getting the current hour
var mytime = new Date();
var currenthour = mytime.getHours();
//*************************************
// Here i'm getting my XML
var myhour:Array = new Array();
var myxml:XML = new XML();
myxml.ignoreWhite = true;
myxml.onLoad = function(success)
{
dataextractor = myxml.firstChild.childNodes;
for (var j = 0; j < dataextractor.length; j++)
{
myhour.push(dataextractor[j].childNodes[1].firstChild.nodeValue);
}
// Doing this
trace(mydate);
}
// Will return this
// 5 , 10, 14 , 20
//**************************************
//这是我现在的时间
var mytime=新日期();
var currenthour=mytime.getHours();
//*************************************
//我在这里得到我的XML
var myhour:Array=new Array();
var myxml:XML=newxml();
myxml.ignoreWhite=true;
myxml.onLoad=函数(成功)
{
dataextractor=myxml.firstChild.childNodes;
对于(var j=0;j
现在我想做的是在mydate数组中查找和跟踪条目,该条目的值接近“currenthour”变量(我的当前时间越高)
例如,如果currenthour=11
如果我的myhour数组等于5,10,14,20
最佳匹配将是myhour[1]
有人能帮忙吗?
myhour数组没有固定数量的条目。
有时可能是5,10,14,而其他时间只有14,20等等
非常感谢,我不确定,我是否了解你的想法。是否需要从myhour数组中找到与currenthour最近的数字 就是这样:
var minDiff : int = 12;
var diff : int;
var index : int = 0;
for (var i : int = 0; i < myhour.length; i++)
{
diff = Math.abs(myhour[i] - currenthour);
if (diff > 12)
diff = 24 - diff;
if (diff < minDiff)
{
minDiff = diff;
index = i;
}
}
var-minDiff:int=12;
var-diff:int;
var指数:int=0;
for(变量i:int=0;i12)
差异=24-差异;
if(diff
myhour[index]
是结果。希望,我有个主意。想象一下你的数字在一条线上,从0到24。
使用变量跟踪XML中当前小时与每个小时之间的最小距离,可以找到要查找的节点的索引:
import mx.xpath.XPathAPI;
var myxml:XML = new XML();
myxml.ignoreWhite = true;
myxml.onLoad = function(loaded:Boolean) {
if (loaded) {
var hoursMin:Number = 24;
var hoursNow:Number = new Date().getUTCHours();
var hourID:Number;
var hours:Array = XPathAPI.selectNodeList(this.firstChild, "xml/prevision/hour");
var hoursNum:Number = hours.length;
for(var i:Number = 0 ; i < hoursNum; i++){
var hoursDiff:Number = Math.abs(hoursNow - parseInt(hours[i].firstChild));//look for the 'shortest distance' within 24 numbers
if(hoursDiff < hoursMin){//found the smallest current value
hoursMin = hoursDiff;//update the minimum
hourID = i;//store the node ID
}
}
trace(this.firstChild.childNodes[hourID]);//access the closest node in time
} else {
trace("XML Load Error!!");
}
}
myxml.load("feed.xml");
导入mx.xpath.XPathAPI;
var myxml:XML=newxml();
myxml.ignoreWhite=true;
myxml.onLoad=函数(已加载:布尔值){
如果(已加载){
var hoursMin:数值=24;
var hoursNow:Number=new Date().getUTCHours();
var hourID:数字;
var hours:Array=XPathAPI.selectNodeList(this.firstChild,“xml/prevision/hour”);
var hoursNum:Number=hours.length;
对于(变量i:Number=0;i
在没有XPath的情况下也是如此,尽管我发现这样访问节点有点困难:
var myxml:XML = new XML();
myxml.ignoreWhite = true;
myxml.onLoad = function(loaded:Boolean) {
if (loaded) {
var hoursMin:Number = 24;
var hoursNow:Number = new Date().getUTCHours();
var hourID:Number;
var hoursNum:Number = this.firstChild.childNodes.length;
for(var i:Number = 0 ; i < hoursNum; i++){
var hoursDiff:Number = Math.abs(hoursNow - parseInt(this.firstChild.childNodes[i].childNodes[1].firstChild));//look for the 'shortest distance' within 24 numbers
if(hoursDiff < hoursMin){//found the smallest current value
hoursMin = hoursDiff;//update the minimum
hourID = i;//store the node ID
}
}
trace(this.firstChild.childNodes[hourID]);//access the closest node in time
} else {
trace("XML Load Error!!");
}
}
myxml.load("feed.xml");
var myxml:XML=newxml();
myxml.ignoreWhite=true;
myxml.onLoad=函数(已加载:布尔值){
如果(已加载){
var hoursMin:数值=24;
var hoursNow:Number=new Date().getUTCHours();
var hourID:数字;
var hoursNum:Number=this.firstChild.childNodes.length;
对于(变量i:Number=0;i
嗯