我正在使用weather.com XML服務來檢索預測數據。我創建了一個UrlLoader實例,並將整個HTTP地址(包括憑證,位置和其他參數)傳遞給它。這與XML(urlLoader.data)功能協同工作得非常好,因爲我得到了指定位置ID的結果。然後我使用E4X來追蹤所需的節點。這很好。如何向URLRequest發送多元地址
棘手的部分是,我必須爲19個其他城市做到這一點。我已經完成了Main類中的初始工作,Main函數,private函數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);
}
}
現在當我調試,我收到錯誤未定義的屬性事件的1120個接入在我getCanberra功能上線:
var urlLoader:URLLoader = event.currentTarget as URLLoader;
感謝通過URL的數組循環尖端。我應該如何將resultXML分配給特定的標籤控件?例如,我將爲堪培拉添加cblbllowtemp,cblblhitemp,cbuicondicon,並將爲其他城市添加此功能。或者,有沒有更適合將正確的軌跡分配給正確標籤的方法? – SidC 2011-05-18 17:55:53
最快的方法是將cblbllowtemp,cblblhitemp,cbuicondicon作爲參數傳遞給構造函數,但這通常是不被接受的。另一種方法可以使用setter和getter方法來分配它們。無論哪種方式都會起作用,因爲這會給課程提供對這些對象的引用。 – 2011-05-18 18:39:55
你能給我一個使用getter/setter方法分配它們的語法示例嗎?另外,在擴展MovieClip的Main類中使用上面的示例時,我收到錯誤1120訪問未定義屬性aVars。我已經在我的公共函數Weather之前定義了這些,就像在代碼片段中顯示的一樣。我該如何解決? – SidC 2011-05-18 20:58:21