Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Flash CS3 e Yahoo Weather

This is a discussion on Flash CS3 e Yahoo Weather within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Salve a tutti ! Abbiamo visto come caricare un file XML esterno con Actionscript 3.0 e abbiamo visto come lavorare ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Old 21-09-07, 17:06
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Flash CS3 e Yahoo Weather

Salve a tutti !
Abbiamo visto come caricare un file XML esterno con Actionscript 3.0 e abbiamo visto come lavorare con un RSS e Flash CS3 per creare una slide di titoli.
Oggi vediamo come utilizzare il servizio che Yahoo mette a disposizione per recuperare i dati riguardo il meteo di ogni città del mondo.
Tale servizio, che si chiama Yahoo Weather, non fa altro che mettere a disposizione un RSS ( che non è altro che un file XML ) .
In sostanza:
si chiama uno script su dominio Yahoo passandogli un id di una città ed un valore ' c ' ( che sta per centigradi ) oppure ' f ' ( che sta per fahrenheit ) e Yahoo restituisce un XML coi valori meteo della città.

Vediamo come fare...*

Creo un FLA che salvo con nome ' main.fla ' .
Al suo interno ho 4 livelli, dal più alto al più basso:
- code, in cui inserisco il codice che vedremo
- testo, ho un campo di testo dinamico con nome ' title_txt '
- logo, in cui ho una MovieClip che contiene il logo di Yahoo con nome ' yahoo_mc '
- area, in cui ho un componente TextArea che chiamo ' info_ta '

Sul keyframe del livello code, scrivo:
Code:
var location_id:String='ITXX0148';
var grades:String='c';
var url:String='http://weather.yahooapis.com/forecastrss?p='+location_id+'&u='+grades;
var richiesta:URLRequest=new URLRequest();
var loader:URLLoader;

richiesta.url=url;
richiesta.method=URLRequestMethod.GET;
loader=new URLLoader();
addListeners(loader);
try 
{
	loader.load(richiesta);
} 
catch (error:Error) 
{
	trace('Unable to load requested document.');
}

function addListeners(d:IEventDispatcher):void
{
	d.addEventListener(Event.COMPLETE,completato);
}

function completato(evt:Event):void
{
	var vars:URLVariables=new URLVariables(evt.target.data); 
	var r:XML=new XML(evt.target.data);
	var myXML:XMLDocument=new XMLDocument();
	myXML.ignoreWhite=true;
	myXML.parseXML(r.toXMLString());
	var node:XMLNode=myXML.firstChild.firstChild;
	title_txt.text=node.firstChild.firstChild.nodeValue;
	var n:int=int(node.childNodes.length);
	for(var i:int=0;i < n;i++)
	{
		if(node.childNodes[i].nodeName=='item')
		{
			var s:int=int(node.childNodes[i].childNodes.length);
			for(var j:int=0;j < s;j++)
			{
				if(node.childNodes[i].childNodes[j].nodeName=='description')
					info_ta.htmlText=node.childNodes[i].childNodes[j].firstChild.nodeValue;
			}
		}
	}
}

yahoo_mc.buttonMode=true;
yahoo_mc.addEventListener(MouseEvent.CLICK,go);
function go(evt:MouseEvent):void
{
	var request:URLRequest=new URLRequest('http://weather.yahoo.com/');
	navigateToURL(request,'_blank');
}
Risultato:










Analizziamo il codice
una variabile di tipo stringa in cui inserisco il valore della città interessata. Per scoprire l' id di una città potete farlo direttamente dal sito di Yahoo Weather
var location_id:String='ITXX0148';
una variabile di tipo stringa in cui inserisco ' c ' oppure ' f ' in base all' unità di misura che voglio utilizzare
var grades:String='c';
una variabile di tipo stringa in cui inserisco l' url dello script Yahoo da chiamare + il pasaggio delle due variabili location_id e grades
var url:String='http://weather.yahooapis.com/forecastrss?p='+location_id+'&u='+grades;
una variabile di tipo URLRequest per fare richiesta di url a Flash
var richiesta:URLRequest=new URLRequest();
un URLLoader per chiamare lo script lato server e recuprare i valori che resituisce
var loader:URLLoader;

faccio richiesta di url a Flash
richiesta.url=url;
imposto la richiesta di tipo GET ( il servizio Yahoo richiede necessariamente una chiamata GET )
richiesta.method=URLRequestMethod.GET;
istanzio l' URLLoader
loader=new URLLoader();
chiamo la funzione addListeners
addListeners(loader);
chiamo lo script
try
{
loader.load(richiesta);
}
catch (error:Error)
{
trace('Unable to load requested document.');
}

aggiungo un listener in ascolto dell' evento COMPLETE che chiamerà la funzione ' completato 'in modo da poter ecuperare i valori della chiamata allo script
function addListeners(d:IEventDispatcher):void
{
d.addEventListener(Event.COMPLETE,completato);
}

In questa funzione applico una logica per andare a recuperare i dati dell' XML che Yahoo mi ha restituito. Dato che la mole di dati e informazioni sul meteo offre molte opzioni, ho scelto di prenderne solo un paio. per chi fosse interessato a recuperare altri o anche tutti i valori dell' XML, può studiarsi il formato dell' XML al seguente link: http://developer.yahoo.com/weather/
function completato(evt:Event):void
{
var vars:URLVariables=new URLVariables(evt.target.data);
var r:XML=new XML(evt.target.data);
var myXML:XMLDocument=new XMLDocument();
myXML.ignoreWhite=true;
myXML.parseXML(r.toXMLString());
var node:XMLNode=myXML.firstChild.firstChild;
title_txt.text=node.firstChild.firstChild.nodeValu e;
var n:int=int(node.childNodes.length);
for(var i:int=0;i < n;i++)
{
if(node.childNodes[i].nodeName=='item')
{
var s:int=int(node.childNodes[i].childNodes.length);
for(var j:int=0;j < s;j++)
{
quì assegno i dati che mi servono in formato html al componente TextArea utilizzando la sua proprietà htmlText
if(node.childNodes[i].childNodes[j].nodeName=='description')
info_ta.htmlText=node.childNodes[i].childNodes[j].firstChild.nodeValue;
}
}
}
}

Questa è semplicemente la logica che gestisce il click sul logo Yahoo
yahoo_mc.buttonMode=true;
yahoo_mc.addEventListener(MouseEvent.CLICK,go);
function go(evt:MouseEvent):void
{
var request:URLRequest=new URLRequest('http://weather.yahoo.com/');
navigateToURL(request,'_blank');
}
Stay tuned !
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Flash CS3 and Yahoo Weather Flep Tutorials 6 09-12-07 09:55


All times are GMT. The time now is 12:11.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406