Créer une petite application Météo (Actionscript 3 XML)


Bonjour tout le monde,

Il a été une fois depuis que je ai posté un blog sur ne importe quel sujet, mais je ai été très occupé relier les points, pour ainsi dire.

Ce que nous allons créer un Bug climatique AS3 App, qui va de Yahoo RSS Météo __gVirt_NP_NN_NNPS<__ (XML).




Il ne est pas difficile, mais en même temps je me réjouis des commentaires et des mises à jour de faire de cette solution élégante.

Voici le code complet (concernant le tutoriel):

// Bouton Soumettre
Submit.addEventListener (MouseEvent.CLICK, GetWeather);
Fonction GetWeather (e: Event) {
//trace(zipCode.text);
var zipText: String = zipCode.text;
XmlClass (zipText);
}
// Récupérer xml
Fonction XmlClass (zip: String): void {
// Configuration d'écoute de l'événement
xmlLoader.addEventListener (Event.COMPLETE, LoadXML);
// Envoyer le flux rss
xmlLoader.load (nouvelle URLRequest ("http://weather.yahooapis.com/forecastrss?p=" zip +));
}
// Exécution de cette fonction après clic de souris
fonction LoadXML (e: Event): void {
XMLData = new XML (e.target.data);
// Envoyer la fonction d'analyse météo
ParseWeather (XMLData);
}
var mcTimer: minuterie = new Timer (0,1)
var i: Boolean = false
//
var minuterie: minuterie = new Timer (0012)
var r: uint = 0
var s: String
//
Fonction ParseWeather (weatherInfo: XML): void {
// Chaîne de configuration vars de saisie de texte
villes var: String = weatherInfo.channel.title;
var jour:. String = weatherInfo.channel.item.children () [5] @ jour;
var temp:. String = weatherInfo.channel.item.children () [5] @ température;
var cond. String = weatherInfo.channel.item.children () [5] @ texte;
var buzz:. String = weatherInfo.channel.children () [9] @ l'humidité;
var Sun:. String = weatherInfo.channel.children () [10] @ l'aube;
var SSET:. String = weatherInfo.channel.children () [10] @ coucher du soleil;
// Forcast étendu Vars
var DayOne:. String = weatherInfo.channel.item.children () [7] @ jour;
var dayTwo:. String = weatherInfo.channel.item.children () [8] @ jour;
var hiOne:. String = weatherInfo.channel.item.children () [7] @ élevé;
var hiTwo:. String = weatherInfo.channel.item.children () [8] @ élevé;
var Loone: String = weatherInfo.channel.item.children () [7] @ faible;.
var loTwo: String = weatherInfo.channel.item.children () [8] @ faible;.
// Affecte la zone de texte de l'emplacement (s)
var locStrip: RegExp =/Yahoo! Météo - /;
locationText.text = city.replace (locStrip, "");
// Mise à jour Box
upDatedOnText.text = "Dernière mise à jour:"" + mise à jour +;
// Temparature du texte
tempText.filters = [glowText]
//tempText.text = température;
// Condtion du texte
condText.text = cond;
condText.filters = [glowText]
// Humidité
humText.text = "Humidité" hum + + "%";
humText.filters = [glowText]
// Lever et coucher de soleil
SunText.text = "Dawn:" + soleil + "\ nSunset:" + SSET;
SunText.filters = [glowText]
// Forcast prolongé
extendForcast.text = "étendu \ n \ n" + DayOne + "" + "salut" hiOne + + », le« + Loone + "\ n" + dayTwo + "" + "salut" hiTwo + + », le« + loTwo ;
extendForcast.filters = [glowText]
// Trace (temp);
// Définit une fonction pour le thermomètre
var Newtemp: uint = Nombre (temp)
var thermSec: uint = Newtemp/30 * 1000
// Effectuer une minuterie de retard
mcTimer.delay = thermSec
mcTimer.start ()
mcTimer.addEventListener (TimerEvent.TIMER, fourchette)
//
timer.addEventListener (TimerEvent.TIMER, testEvt)
timer.start ()
TestEvt function (e: TimerEvent): void {
S = cordes (r)
si (r == Newtemp) {
r = 0
Trace ("stop")
timer.stop ()
timer.removeEventListener (TimerEvent.TIMER, testEvt)
} Else {
r ++
// Trace (s)
tempText.text = s
}
//testo.text = i
}
//
si (i == false) {
th.play ()
i = true
// Trace ("zéro")
} Else if (i == true) {
th.gotoAndPlay (2)
// Trace («autre»)
}
}

fonction Junction (e: TimerEvent) {
th.stop ()
mcTimer.stop ()
mcTimer.removeEventListener (TimerEvent.TIMER, fourchette)
//trace(mcTimer.running)
}

Ne vous inquiétez pas, nous allons le décomposer bloc fonctionnel par le bloc.

1) Submit.addEventListener (MouseEvent.CLICK, GetWeather);

Ceci définit un écouteur pour le clic sur le bouton d'envoi, sur notre film de toile nous sommes partis sur un bouton et il a donné un nom "Envoyer" dans la pratique lorsque vous cliquez sur ce bouton, vous exécutez la fonction nommée GetWeather

2)

GetWeather (e: Event) {
//trace(zipCode.text);
var zipText: String = zipCode.text;
XmlClass (zipText);
}

Regardez la variable que nous avons créé avec le nom de zipText est relié à une zone de texte (entrée) nommé "zipText ", puis l'envoyer à une fonction appelée XmlClass (), la fonction charge le XML nous avons besoin pour obtenir les valeurs de notre exposition.

3)

// Récupérer xml
travailler XmlClass (zip: String): void {
// Configuration d'écoute de l'événement
xmlLoader.addEventListener (Event.COMPLETE, LoadXML);
// Envoyer le flux rss
xmlLoader.load (nouvelle URLRequest ("http://weather.yahooapis.com/forecastrss?p= "+ zip));
}

Regardez le paramètre de fonction, nous avons utilisé l'entrée de la saisie de texte zip de zone de texte, après que nous avons attaqué le var a querystring: http://weather.yahooapis.com/forecastrss?p= "+ zip, ce qui enverra une demande et la charge XML dans le film pour utiliser cette fonctionnalité)

LoadXML voir le 2e ligne appelant à un auditeur de charger la fonction (tout simplement saisissant et en charge)

4)

LoadXML (e: Event): void {
XMLData = new XML (e.target.data);
// Envoyer la fonction d'analyse météo
ParseWeather (XMLData);
}

Une fois chargé, nous pouvons faire notre dégâts, nous regardons la fonction ParseWeather, nous allons l'utiliser pour supprimer le fichier XML pour saisir les informations nécessaires de lui.

A l'intérieur du ParseWeather fonction il ya beaucoup de choses qui se passent, mais ces lignes vous donnera un avant-goût de la portée dans le fichier XML.

// Chaîne de configuration vars de saisie de texte
villes var: String = weatherInfo.channel.title;
var jour:. String = weatherInfo.channel.item.children () [5] @ jour;
var temp:. String = weatherInfo.channel.item.children () [5] @ température;
var cond. String = weatherInfo.channel.item.children () [5] @ texte;
...... Plus d'infos Code

Tout ce que nous faisons ici est en train de mettre le noeud et la valeur dans une zone de texte, dynamique, je ne peux pas entrer dans les détails sur XML, mais vous permet de prendre cette ligne:

villes var: String = weatherInfo.channel.title;

Si vous étiez à regarder le cru Yahoo, il est noeud de niveau supérieur est appelé «canal», nous a confié ce à un objet XML nom nous avons créé weatherInfo, afin qu'il se lise weatherInfo, canal. Si vous ramper à travers ce point, le nœud suivant est le nom "title", weatherInfo, channel.title.

Cela peut être déroutant, mais si vous voyez la page d'alimentation de Yahoo, RSS qui fournissent une petite introduction sur les flux XML.

5) Therometer d'animation

// Définit une fonction pour le thermomètre
var Newtemp: uint = Nombre (temp)
var thermSec: uint = Newtemp/30 * 1000
// Trace (Newtemp)
mcTimer.delay = thermSec
mcTimer.start ()
mcTimer.addEventListener (TimerEvent.TIMER, fourchette)

Il pourrait y avoir un certain nombre de façons, vous pourriez probablement faire cela, pour cet exemple je ai fait cela, pls aider les autres membres et associés d'une solution plus élégante.

Fondamentalement, voici ce qui est arrivé:

Changez le Newtemp en nombre et utiliser ce numéro pour effectuer le mercure d'animation, ce nombre sera utilisé pour exécuter une minuterie, parce que l'animation est d'une certaine longueur, la minuterie se arrête à ce moment et est contrôlée par une autre auditeur.

mcTimer.addEventListener (TimerEvent.TIMER, éteindre)

éteindre

éteindre (e: TimerEvent) {
th.stop ()
mcTimer.stop ()
mcTimer.removeEventListener (TimerEvent.TIMER, éteindre)
//trace(mcTimer.running)
}

Je sais que ce est beaucoup de passer par juste pour obtenir le temps, mais donne beaucoup de perspicacité dans ce qui se passe derrière le rideau. Je aimerais écrire un article expliquant la minuterie de classe, les variables AS3, texte d'entrée, etc., peut être source de confusion pour regarder tout cela.

Mais tous les développeurs qui ne ont aucune expérience dans ces sujets qui invitent commentaires et des solutions plus élégantes.

Pour l'instant je veux prouver que vous pouvez faire, de nous les gens normaux, merci encore.


Actionscript 3

(0)
(0)

Commentaires - 0

Sans commentaires

Ajouter un commentaire

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caractères restants: 3000
captcha