58 lines
1.7 KiB
ActionScript
58 lines
1.7 KiB
ActionScript
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;
|
|
}
|
|
}
|
|
}
|