Das TPNewsreader.as-Objekt lädt die Liste der Newseinträge und managed das Loopen derselbigen. Außerdem managed er das Scrollen über das Mausrad, sowie die Aktualisierungsrate, welche im Moment bei einem 5-Minuten-Intervall liegt.
// TPNewsreader.as
// Philip Drobar
// Last Change: 09.06.10
package {
import flash.display.Sprite;
import flash.events.*;
import flash.utils.Timer;
public class TPNewsreader04 extends Sprite {
public var ImportedFeeds:FeedReader = new FeedReader(); // Importiert die Liste der Feed-Einträge die mit FeedReader.as erzeugt wurde.
public var FeedlistUpper:FeedReader = new FeedReader(); // Klon der Feedliste für den Loop
public var FeedlistLower:FeedReader = new FeedReader(); // Klon der Feedliste für den Loop
public var RefreshTimer:Timer = new Timer(10);
public function TPNewsreader04() {
init();
}
private function init() {
// Positionieren der Beitragsliste und hinzufügen zur Bühne
ImportedFeeds.x=0;
ImportedFeeds.y=0;
addChild(ImportedFeeds);
// Klonen der Feedliste für den Loop
FeedlistUpper.x=0;
FeedlistUpper.y=0 - ImportedFeeds.height; // FeedlistUpper ist der Klon ÜBER der Original-Liste
addChild(FeedlistUpper);
FeedlistLower.x=0;
FeedlistLower.y=0 + ImportedFeeds.height;
addChild(FeedlistLower); // FeedlistUpper ist der Klon UNTER der Original-Liste
RefreshTimer.start();
RefreshTimer.addEventListener(TimerEvent.TIMER, timerListener);
stage.addEventListener(MouseEvent.MOUSE_WHEEL,Scrolling);// Dieses Event löst das Scrollen aus - FUNKTIONIERT NUR UNTER WINDOWS!
}
private function timerListener(e:TimerEvent):void {
//trace(RefreshTimer.currentCount);
if(RefreshTimer.currentCount == 1870){
FeedRefresh();
RefreshTimer.stop();
RefreshTimer.reset();
RefreshTimer.start();
}
}
private function FeedRefresh():void {
removeChild(ImportedFeeds);
removeChild(FeedlistUpper);
removeChild(FeedlistLower);
// Positionieren der Beitragsliste und hinzufügen zur Bühne
ImportedFeeds.x=0;
ImportedFeeds.y=0;
addChild(ImportedFeeds);
// Klonen der Feedliste für den Loop
FeedlistUpper.x=0;
FeedlistUpper.y=0 - ImportedFeeds.height; // FeedlistUpper ist der Klon ÜBER der Original-Liste
addChild(FeedlistUpper);
FeedlistLower.x=0;
FeedlistLower.y=0 + ImportedFeeds.height;
addChild(FeedlistLower); // FeedlistUpper ist der Klon UNTER der Original-Liste
}
private function Scrolling(e:MouseEvent):void {
ImportedFeeds.y += (e.delta *2);// Das e.delta enthält die Zeilensprung-Information aus dem Mausrad. Somit ändert sich die Y-Position gemäß der Rotation des Rades.
FeedlistUpper.y = ImportedFeeds.y - ImportedFeeds.height - 15; // Die Klone werden entsprechend mitpositioniert.
FeedlistLower.y = ImportedFeeds.y + ImportedFeeds.height + 15; // Die Klone werden entsprechend mitpositioniert.
if(FeedlistUpper.y >= 0){ // User ist am oberen "Ende" angelangt
positionReset(); // Position wird zurückgesetzt um den "Loop" zu simulieren.
}
if(FeedlistLower.y <= 0){ // User ist am unterem "Ende" angelangt
positionReset(); // Position wird zurückgesetzt um den "Loop" zu simulieren.
}
}
// Diese Funktion sorgt für den "Loop". Es werden die Positionen der Klone und der Originalliste genau dann
// zurückgesetzt/vertauscht, wenn es für den User nicht bemerkbar ist.
private function positionReset():void {
ImportedFeeds.y=0;
FeedlistUpper.y=0 - ImportedFeeds.height - 15;
FeedlistLower.y=0 + ImportedFeeds.height + 15;
}
}
}