You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.7 KiB

package
{
import mx.collections.ArrayCollection;
import mx.controls.TextInput;
import mx.core.Application;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
public class WeatherApp extends Application
{
function WeatherApp()
{
}
[Bindable]
public var myResult:XML;
[Bindable]
public var weatherObject:Object;
[Bindable]
public var listContents:ArrayCollection;
public var weatherService:HTTPService;
public var zip:TextInput;
public 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);
}
public 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;
}
}
}