Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/158.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
Actionscript 如何将变量与数组中的条目进行比较_Actionscript_Actionscript 2 - Fatal编程技术网

Actionscript 如何将变量与数组中的条目进行比较

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<

这是我的问题

我正在用flash做一个小天气网络应用程序。 因此,我读取了一个xml提要,并从中复制了一个数据数组

我的xml是这样的

<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