89 lines
2.8 KiB
XML
89 lines
2.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
|
|
backgroundColor="#FFFFFF"
|
|
backgroundAlpha="0"
|
|
horizontalAlign="left"
|
|
verticalGap="15" horizontalGap="15">
|
|
<mx:Script>
|
|
<![CDATA[
|
|
import mx.collections.ArrayCollection;
|
|
import mx.rpc.events.ResultEvent;
|
|
|
|
[Bindable]
|
|
private var myResult:XML;
|
|
|
|
[Bindable]
|
|
private var weatherObject:Object;
|
|
|
|
[Bindable]
|
|
private var listContents:ArrayCollection;
|
|
|
|
private namespace yweather = "http://xml.weather.yahoo.com/ns/rss/1.0";
|
|
use namespace yweather;
|
|
|
|
public function requestWeather():void {
|
|
weatherService.cancel();
|
|
var params:Object = new Object();
|
|
params.p = zip.text;
|
|
weatherService.send(params);
|
|
}
|
|
|
|
public function resultHandler(event:ResultEvent):void {
|
|
myResult = XML(event.result);
|
|
weatherObject = new Object();
|
|
weatherObject.zip = zip.text;
|
|
weatherObject.city = myResult.channel.yweather::location.@city;
|
|
weatherObject.temp = myResult.channel.item.yweather::condition.@temp;
|
|
weatherObject.imgsource = parseImageUrl(myResult.channel.item.description);
|
|
|
|
var a:Array = new Array(weatherObject);
|
|
listContents = new ArrayCollection(a);
|
|
}
|
|
|
|
private function parseImageUrl(fromHtml:XMLList):String {
|
|
var pattern:RegExp = /img src="(.+?)"/;
|
|
var results:Array = pattern.exec(fromHtml);
|
|
var imageURL:String = results[1]; // backreference 1 from pattern
|
|
return imageURL;
|
|
}
|
|
]]>
|
|
</mx:Script>
|
|
|
|
<mx:HTTPService
|
|
id="weatherService"
|
|
url="http://weather.yahooapis.com/forecastrss"
|
|
resultFormat="e4x"
|
|
result="resultHandler(event)" />
|
|
|
|
<mx:Text text="1. Basic Form + HTTPService Retrieval" />
|
|
|
|
<mx:Form width="400">
|
|
<mx:FormItem label="Zip Code">
|
|
<mx:TextInput id="zip" />
|
|
<mx:Button label="Get Weather"
|
|
click="requestWeather()" />
|
|
</mx:FormItem>
|
|
</mx:Form>
|
|
|
|
<mx:Text text="Raw RSS Feed" />
|
|
|
|
<mx:TextArea id="resultFld"
|
|
text="{myResult}"
|
|
width="400" height="152" />
|
|
|
|
<mx:Text text="1. List w/ Image Item Renderer (Drop-In)" />
|
|
|
|
<mx:List dataProvider="{listContents}"
|
|
labelField="imgsource"
|
|
width="400" height="100"
|
|
itemRenderer="mx.controls.Image" />
|
|
|
|
<mx:Text text="2. List w/ HBoxWeatherDisplay itemRenderer" />
|
|
|
|
<mx:List dataProvider="{listContents}"
|
|
labelField="zip"
|
|
width="400" height="100"
|
|
itemRenderer="HBoxWeatherDisplay" />
|
|
|
|
</mx:Application>
|