package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.events.*; import be.wellconsidered.services.WebService; import be.wellconsidered.services.Operation; import be.wellconsidered.services.events.OperationEvent; public class Weather extends Sprite { private var ws:WebService; private var op:Operation; private var oImages:Array; private var oResult:Object; private var hiTemps:Array; private var lowTemps:Array; private var days:Array; private var STATE:String = ""; private var CITY:String = ""; private var LONGITUDE:String = ""; private var LATITUDE:String = ""; public function Weather() { init(); } private function init():void { ws = new WebService( "http://www.webservicex.net/WeatherForecast.asmx?wsdl" ); op = new Operation( ws ); op.addEventListener( OperationEvent.COMPLETE, onResult ); op.addEventListener( OperationEvent.FAILED, onFault ); op.GetWeatherByZipCode( "01701" ); //op.GetWeatherByPlaceName( "new york" ); } private function onResult( e:OperationEvent ):void { oImages = new Array(); oResult = e.data; hiTemps = new Array(); lowTemps = new Array(); days = new Array(); // This is nasty, but it works. for( var s:String in oResult ) { //trace( s + "=" + oResult[s] ) if( s == "Details" ) { var det:Object = oResult[s]; for( var i:String in det ) { var thisDetail:Object = det[i]; for( var foo:String in thisDetail ) { if( foo == "MaxTemperatureF" ) { hiTemps.push( thisDetail[foo] ) } else if ( foo == "MinTemperatureF" ) { lowTemps.push( thisDetail[foo] ) } else if( foo == "Day" ) { days.push( thisDetail[foo] ) } else if( foo == "WeatherImage" ) { oImages.push( thisDetail[foo] ); } } } } } CITY = oResult.PlaceName; STATE = oResult.StateCode; LATITUDE = oResult.Latitude; LONGITUDE = oResult.Longitude; drawUI(); } private function drawUI():void { var tit:Title = new Title(); tit.x = 0; tit.y = 11; tit.where_txt.text = CITY + ", " + STATE; addChild( tit ); var posX:Number = 20; for( var i:int = 0; i