Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 3 如何向URL请求发送多个地址_Actionscript 3 - Fatal编程技术网

Actionscript 3 如何向URL请求发送多个地址

Actionscript 3 如何向URL请求发送多个地址,actionscript-3,Actionscript 3,我正在使用weather.com XML服务检索预测数据。我创建了一个UrlLoader实例,并将整个HTTP地址(包括凭据、位置和其他参数)传递给它。这与XML(urloader.data)功能配合使用效果非常好,因为我获得了指定位置ID的结果。然后,我使用E4X仅跟踪所需的节点。这一切都很好 棘手的是,我必须为另外19个城市做这件事。我已经在主类、主函数、私有函数onXmlLoaded中完成了初始工作。我尝试创建一个新的公共函数getCityName,生成新的URLRequest,跟踪XML

我正在使用weather.com XML服务检索预测数据。我创建了一个UrlLoader实例,并将整个HTTP地址(包括凭据、位置和其他参数)传递给它。这与XML(urloader.data)功能配合使用效果非常好,因为我获得了指定位置ID的结果。然后,我使用E4X仅跟踪所需的节点。这一切都很好

棘手的是,我必须为另外19个城市做这件事。我已经在主类、主函数、私有函数onXmlLoaded中完成了初始工作。我尝试创建一个新的公共函数getCityName,生成新的URLRequest,跟踪XML并向我的组件添加值。但是,当我尝试此操作时,我收到:

错误5006:ActionScript文件不能有多个外部可见的定义

我如何轻松地设置URLRequest以请求所有20个城市的数据,然后解析结果?我是否将位置ID数组传递给URLRequest,因为这是HTTP请求中唯一不同的部分。我是否为20个查询中的每个查询创建单独的ActionScript文件,并使用它们自己的类和函数

代码如下:

public class Main extends MovieClip
{
    public function Main()
    {
        var urlRequest:URLRequest = new URLRequest("http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a");
        var urlLoader:URLLoader=new URLLoader();

        urlLoader.addEventListener(Event.COMPLETE, onXmlLoaded);
        urlLoader.load(urlRequest);
    }
    public function onXmlLoaded(event:Event): void 
    {
        XML.ignoreWhitespace = true;
        var urlLoader:URLLoader = event.currentTarget as URLLoader;
        var resultXML:XML = XML(urlLoader.data);
        trace(resultXML.dayf.day.hi);
        trace(resultXML.dayf.day.low);
        trace(resultXML.dayf.day.part.(@p=="d").icon);

        lbllowtemp.text= String(resultXML.dayf.day.low);
        lblhitemp.text=String(resultXML.dayf.day.hi);
        uicondicon.source=String(resultXML.dayf.day.part.(@p=="d").icon)+".png";

        var tf:TextFormat = new TextFormat;
        tf.color=0xFFFFFF;
        tf.font="Arial";
        tf.size=16;
        tf.bold=true;
        lbllowtemp.setStyle("textFormat",tf);
        lblhitemp.setStyle("textFormat",tf);
        }

    public function getCanberra()
    {
        var urlRequest:URLRequest = new URLRequest("http://xoap.weather.com/weather/local/ASXX023?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a");
        var urlLoader:URLLoader=new URLLoader();

        urlLoader.addEventListener(Event.COMPLETE, onXmlLoaded);
        urlLoader.load(urlRequest);

        XML.ignoreWhitespace = true;
        var urlLoader:URLLoader = event.currentTarget as URLLoader;
        var resultXML:XML = XML(urlLoader.data);
        trace(resultXML.dayf.day.hi);
        trace(resultXML.dayf.day.low);
        trace(resultXML.dayf.day.part.(@p=="d").icon);

        lblCBlowtemp.text= String(resultXML.dayf.day.low);
        lblCBhitemp.text=String(resultXML.dayf.day.hi);
        uiCBcondicon.source=String(resultXML.dayf.day.part.(@p=="d").icon)+".png";

        var tf:TextFormat = new TextFormat;
        tf.color=0xFFFFFF;
        tf.font="Arial";
        tf.size=16;
        tf.bold=true;
        lblCBlowtemp.setStyle("textFormat",tf);
        lblCBhitemp.setStyle("textFormat",tf);
    }
}
现在调试时,我在getCanberra函数的以下行收到错误1120访问未定义属性事件:

var urlLoader:URLLoader = event.currentTarget as URLLoader;

我敢肯定,只有在类外定义了函数时,才会发生此错误:

例如:

package {    
    public class YourClass {
        public function YourClass() {
            //Constructor
        }

        public function correctFunction():void {
            //No error.
        }
    }
    public function errorFunction():void {
        //will throw 5006 error.
    }
}
只需循环。
显然,根据您的需要更改链接

var weather:Weather = new Weather( );


package {    
  public class Weather{
    public var aVars:Array = new Array();
    aVars[0] = "http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a"
    aVars[1] = "http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a"
    aVars[2] = "http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a"
    aVars[3] = "http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a"

    public function Weather() {
      for( var i:int = 0; i<aVars.length; i++){
        var urlRequest:URLRequest=new URLRequest(aVars[i]);
        var urlLoader:URLLoader=new URLLoader();
        urlLoader.addEventListener(Event.COMPLETE, onXmlLoaded);
        urlLoader.load(urlRequest);
      }
    }
    public function onXmlLoaded(event:Event):void {
      XML.ignoreWhitespace=true;
      var urlLoader:URLLoader=event.currentTarget as URLLoader;
      var resultXML:XML=XML(urlLoader.data);
      trace(resultXML.dayf.day.hi);
      trace(resultXML.dayf.day.low);
      trace(resultXML.dayf.day.part.(@p=="d").icon);

      lbllowtemp.text=String(resultXML.dayf.day.low);
      lblhitemp.text=String(resultXML.dayf.day.hi);
      uicondicon.source=String(resultXML.dayf.day.part.(@p=="d").icon)+".png";


      // note that tf has not been added to the display list so will not be visible
      var tf:TextFormat=new TextFormat  ;
      tf.color=0xFFFFFF;
      tf.font="Arial";
      tf.size=16;
      tf.bold=true;
      lbllowtemp.setStyle("textFormat",tf);
      lblhitemp.setStyle("textFormat",tf);
    }

  }
}
var-weather:weather=newweather();
包{
公共天气{
public var aVars:Array=new Array();
aVars[0]=”http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a"
aVars[1]=”http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a"
aVars[2]=”http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a"
阿瓦尔[3]=”http://xoap.weather.com/weather/local/ASXX0274?dayf=1&link=xoap&par=1253350999&key=9a25cc224522c34a"
公众活动天气(){

对于(var i:int=0;我想了解有关在URL数组中循环的技巧。我应该如何将resultXML分配给特定的标签控件?例如,我将为堪培拉添加cblbllowtemp、cblblhitemp、cbuicondicon,并将为其他城市添加这些控件。或者,有没有更优化的方法将正确的跟踪分配给正确的标签方法是将cblbllowtemp、cblblhitemp、cbuicondicon作为参数传递到构造函数中,但这通常是不赞成的。另一种方法是使用setter和getter方法来分配它们。任何一种方法都可以工作,因为这将为类提供对这些对象的引用。您能给我一个使用getter/setter方法的语法示例吗分配它们?另外,当在扩展MovieClip的主类中使用上面的示例时,我收到错误1120未定义属性aVars的访问。我已经在公共函数Weather之前定义了这些属性,正如您的代码片段中所示。我如何修复此问题?实际上,我有一个更好的主意。我们需要将其转换为通用加载程序class和on response获得VAR。但要做到这一点,我需要知道更多的信息。你说你需要这样做19次。这是否意味着你有19*3(hi,low,icon)要填充的区域,还是通过在选定的城市中填充它们来重复使用它们?我有大约10个城市,每个城市都有hi、low和图标值。我不知道我可以为不同的城市重复使用标签。我该怎么做?谢谢:)