http://junelife.tistory.com/37----------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="selectCity()" fontFamily="Arial" fontSize="11" width="100%" height="100%" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.ArrayUtil;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.http.HTTPService;
private function selectCity():void {
var curCity:String = cbCity.selectedItem.data;
var svHTTP:HTTPService = new HTTPService();
svHTTP.url = "http://www.google.co.kr/ig/api?weather=" + curCity;
svHTTP.addEventListener(ResultEvent.RESULT, resultHandler);
svHTTP.addEventListener(FaultEvent.FAULT, faultHandler);
svHTTP.send();
}
public function resultHandler(event:ResultEvent):void {
var resultAC:ArrayCollection = (event.result.xml_api_reply.weather is ArrayCollection) ?
event.result.xml_api_reply.weather as ArrayCollection :
new ArrayCollection(ArrayUtil.toArray(event.result.xml_api_reply.weather));
if(resultAC.getItemAt(0).problem_cause != null) {
Alert.show(resultAC.getItemAt(0).problem_cause.data);
curInfo.text = "";
curIcon.load(null);
} else {
// 현재 날씨 정보
currentWeatherInfo(resultAC.getItemAt(0));
// 오늘 날씨 정보
todayDispWeatherInfo(resultAC.getItemAt(0));
// 다음 날씨 정보
next1DispWeatherInfo(resultAC.getItemAt(0));
// 이틀 째 날씨 정보
next2DispWeatherInfo(resultAC.getItemAt(0));
// 삼일째 날씨 정보 Display
next3DispWeatherInfo(resultAC.getItemAt(0));
}
}
// 현재 날씨 정보 Display
private function currentWeatherInfo(params:Object):void {
var txtValue:String = "";
txtValue = txtValue + "현재 : " + params.current_conditions.condition.data;
txtValue = txtValue + ", " + params.current_conditions.temp_c.data + "℃";
txtValue = txtValue + ", " + params.current_conditions.humidity.data;
txtValue = txtValue + ", " + params.current_conditions.wind_condition.data;
curInfo.text = txtValue;
curIcon.load("http://www.google.co.kr/ig" + params.current_conditions.icon.data);
}
// 오늘 날씨 정보 Display
private function todayDispWeatherInfo(params:Object):void {
lbToday.text = params.forecast_conditions[0].day_of_week.data;
todayIcon.load("http://www.google.co.kr/ig" + params.forecast_conditions[0].icon.data);
todayIcon.toolTip = params.forecast_conditions[0].condition.data;
lbTodayTemp.text = params.forecast_conditions[0].low.data + "℃ | " + params.forecast_conditions[0].high.data + "℃";
}
// 다음 날씨 정보 Display
private function next1DispWeatherInfo(params:Object):void {
lbNext1.text = params.forecast_conditions[1].day_of_week.data;
next1Icon.load("http://www.google.co.kr/ig" + params.forecast_conditions[1].icon.data);
next1Icon.toolTip = params.forecast_conditions[1].condition.data;
lbNext1Temp.text = params.forecast_conditions[1].low.data + "℃ | " + params.forecast_conditions[1].high.data + "℃";
}
// 이틀째 날씨 정보 Display
private function next2DispWeatherInfo(params:Object):void {
lbNext2.text = params.forecast_conditions[2].day_of_week.data;
next2Icon.load("http://www.google.co.kr/ig" + params.forecast_conditions[2].icon.data);
next2Icon.toolTip = params.forecast_conditions[2].condition.data;
lbNext2Temp.text = params.forecast_conditions[2].low.data + "℃ | " + params.forecast_conditions[2].high.data + "℃";
}
// 삼일째 날씨 정보 Display
private function next3DispWeatherInfo(params:Object):void {
lbNext3.text = params.forecast_conditions[3].day_of_week.data;
next3Icon.load("http://www.google.co.kr/ig" + params.forecast_conditions[3].icon.data);
next3Icon.toolTip = params.forecast_conditions[3].condition.data;
lbNext3Temp.text = params.forecast_conditions[3].low.data + "℃ | " + params.forecast_conditions[3].high.data + "℃";
}
public function faultHandler(event:FaultEvent):void {
Alert.show(event.fault.message);
}
]]>
</mx:Script>
<mx:Model id="cityData">
<Cities>
<City label="서울" data="Seoul"/>
<City label="대구" data="Daegu"/>
<City label="부산" data="Busan"/>
<City label="광주" data="GwangJu"/>
<City label="대전" data="Daejeon"/>
<City label="전주" data="Jeonju"/>
<City label="원주" data="Wonju"/>
<City label="청주" data="Chungju"/>
<City label="포항" data="Pohang"/>
<City label="성남" data="Songnam"/>
<City label="수원" data="Suwon"/>
<City label="상주" data="Sangju"/>
<City label="김해" data="Gimhae"/>
<City label="인천" data="Incheon"/>
<City label="울산" data="Ulsan"/>
<City label="창원" data="Changwon"/>
<City label="천안" data="Cheonan"/>
<City label="안양" data="Anyang"/>
<City label="안산" data="Ansan"/>
<City label="춘천" data="Chuncheon"/>
<City label="제주" data="Jeju"/>
<City label="여수" data="Yeosu"/>
<City label="안동" data="Andong"/>
<City label="양산" data="Yangsan"/>
<City label="태안" data="Taean"/>
<City label="진주" data="Jinju"/>
<City label="진해" data="Chinhae"/>
<City label="의정부" data="Uijongbu"/>
<City label="평택" data="Pyongtaek"/>
<City label="오산" data="Osan"/>
<City label="순천" data="Sunchon"/>
<City label="당진" data="Dangjin"/>
<City label="마산" data="Masan"/>
<City label="군산" data="Gunsan"/>
<City label="목포" data="Mokpo"/>
<City label="동해" data="Tonghae"/>
<City label="구미" data="Gumi"/>
<City label="삼척" data="Samchok"/>
</Cities>
</mx:Model>
<mx:ArrayCollection id="myAC" source="{ArrayUtil.toArray(cityData.City)}"/>
<mx:ComboBox x="10" y="10" width="81" enabled="true" id="cbCity" dataProvider="{myAC}" change="selectCity()"></mx:ComboBox>
<mx:Button x="99" y="11" label="Refresh Weather Info" id="btnRefresh" enabled="true" click="selectCity()"/>
<mx:TextInput x="10" y="42" width="283" id="curInfo" editable="false" enabled="true"/>
<mx:VBox x="10" y="85" height="107" width="67">
<mx:Label width="100%" enabled="true" textAlign="center" id="lbToday"/>
<mx:Image id="todayIcon" verticalAlign="middle" horizontalAlign="center" width="66"/>
<mx:Label width="100%" textAlign="center" id="lbTodayTemp"/>
</mx:VBox>
<mx:Image x="301" y="34" id="curIcon"/>
<mx:VBox x="85" y="85" height="107" width="67">
<mx:Label id="lbNext1" enabled="true" width="100%" textAlign="center"/>
<mx:Image id="next1Icon" width="66" horizontalAlign="center" verticalAlign="middle"/>
<mx:Label id="lbNext1Temp" width="100%" textAlign="center"/>
</mx:VBox>
<mx:VBox height="107" width="67" x="160" y="85">
<mx:Label id="lbNext2" enabled="true" width="100%" textAlign="center"/>
<mx:Image id="next2Icon" width="66" horizontalAlign="center" verticalAlign="middle"/>
<mx:Label id="lbNext2Temp" width="100%" textAlign="center"/>
</mx:VBox>
<mx:VBox height="107" width="67" x="235" y="85">
<mx:Label id="lbNext3" enabled="true" width="100%" textAlign="center"/>
<mx:Image id="next3Icon" width="66" horizontalAlign="center" verticalAlign="middle"/>
<mx:Label id="lbNext3Temp" width="100%" textAlign="center"/>
</mx:VBox>
</mx:WindowedApplication>
----------------------------------------------------------------------------------------