Я использую сервис Weather.com XML для получения данных прогноза.Я создал экземпляр UrlLoader и передал ему полный HTTP-адрес, включая учетные данные, местоположение и другие параметры.Это очень хорошо работает в тандеме с функциональностью XML (urlLoader.data), поскольку я получаю результат для указанного идентификатора местоположения.Затем я использую E4X для отслеживания только необходимых узлов.Это все хорошо.
Сложность в том, что я должен сделать это для 19 дополнительных городов.Я сделал начальную работу в классе Main, функции Main, частной функции onXmlLoaded.Я попытался создать новую публичную функцию getCityName, создав новый URLRequest, отслеживая XML и добавляя значения в мои компоненты.Однако, когда я пытаюсь это сделать, я получаю:
Ошибка 5006. Файл ActionScript не может иметь более одного видимого извне определения.
Как легко настроить URLRequestзапросить данные для всех 20 городов и проанализировать результаты после этого?Должен ли я передать массив идентификаторов местоположений в URLRequest, потому что это единственная часть HTTP-запроса, которая отличается.Создаю ли я отдельные файлы ActionScript со своим собственным классом и функциями для каждого из 20 запросов?
Вот код:
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);
}
}
Когда я отлаживаю сейчас, я получаю ошибку 1120 доступа неопределенногособытие свойства в моей функции getCanberra в строке:
var urlLoader:URLLoader = event.currentTarget as URLLoader;