Das FeedReader.as - Objekt

Wie im Flowchart kurz beschrieben, ist das FeedReader.as-Objekt dazu da, den Newsfeed aus dem Internet zu laden und die Liste der Beiträge zu erzeugen. Es benötigt nur das SingleFeed.as-Objekt und ist dann auch ohne dem TPNewsreader.as lauffähig, allerdings ohne Scroll-Funktion.

In dieser Datei wird auch festgelegt, welcher Newsfeed geladen wird. Wenn man diesen also ändern möchte, findet man die URL in Zeile 17.

// FeedReader.as
// Philip Drobar
// Last Change: 08.06.2010

package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.*; // benötigt für die RSS-Funktionen
import flash.text.*;

public class FeedReader extends Sprite {
private var feeds:Array; // In diesem Array speichern wir die einzelnen Feedeinträge die wir in SingleFeeds.as generieren. Wir brauchen es zum erstellen der Liste.
private var numFeeds:Number=0; // Anzahl der einzelnen Feedeinträge - ebenfalls für das Erstellen der Liste

// ==== Einen RSS-Feed in ein rssLoader-Objekt laden ====
public var rssLoader:URLLoader = new URLLoader();
public var rssURL:URLRequest=new URLRequest("http://www.spiegel.de/schlagzeilen/tops/index.rss"); // Hier wird die WWW-Adresse des Feeds eingegeben.
// ==== XML Objekt generieren ====
public var rssXML:XML = new XML();

public function FeedReader() {
init();
}

private function init():void {

feeds = new Array();//Array in dem alle Single-Feeds gespeichert werden, siehe oben (Zeile 8).

rssLoader.addEventListener(Event.COMPLETE, rssLoaded);
rssLoader.load(rssURL);
rssXML.ignoreWhitespace=true;

}

// ==== Diese Funktion behandelt das COMPLETE-Event des rssLoader-Objekts und schmeisst die Feed-Beiträge in das feeds-Array ====
private function rssLoaded(e:Event):void {
rssXML=XML(rssLoader.data);

// === Diese Schleife schlägt in dem Feed die Daten der einzelnen Beiträge nach, übergibts die an SingleFeed.as und bekommt einen einzelnen aufbereiteten Feedeintrag zurück
// === den es anschließend in einer Liste anordnet.
for (var item:String in rssXML.channel.item){
numFeeds++; // Anzahl der Feeds erhöhen

var FeedIndex:String = "FeedIndex " + item; // Der Index gibt den Beitrag eines Feeds an
// Folgende Zeile übergibt dem SingleFeed-Objekt alle Infos wie Datum, Schlagzeile und Inhalt (und auch Farbe) und erhält einen fertigen Beitrag für die Liste zurück.
var singleFeed:SingleFeed=new SingleFeed( rssXML.channel.item[item].pubDate.substr(0, 16) + ": " + rssXML.channel.item[item].title,rssXML.channel.item[item].description);
singleFeed.x=5; // X-Position ist immer gleich, da wir unsere Beiträge vertikal anordnen.
singleFeed.y=5 + (numFeeds * 540)-540; // Position des SingleFeeds muss abhängig sein von der Position der anderen Feeds und von der Index-Nummer des SingleFeeds
addChild(singleFeed);// SingleFeed-Objekt -also einen einzelnen Beitrag- der Bühne hinzufügen

feeds.push(FeedIndex); // Das Array der Feeds erweitern.

}

}


}
}