Hier ein kleines Widget, das mit SWX und SWXml realisiert wurde. SWXml ist ein generischer XML Parser, mit dem man auf einfache Weise auf die Informationen eines Feeds zugreifen kann.
Das Widget liest den RSS Feed von swxformat.org und zeigt die letzten fünf Beiträge. Klickt man auf einen Beitrag, kommt man zum vollständigen Artikel.
[kml_flashembed movie=“http://www.video-flash.de/wp-content/uploads/2007/10/SWXml/demonstration/widget.swf“ height=“300″ width=“180″ /]
Der Aufruf der SWXml-Serviceklasse erfolgt beim Aufrufen des SWX-Calls. Nachdem SWXml den Feed gelesen und in ein Array gewandelt hat, erhält man das Resultat in Flash zurück. Die Informationen können nun in der Funktion „resultHandler“ verarbeitet werden.
Die Quelldateien dieses Beispiels habe ich dem SWXml-Download hinzugefügt (SWXml: XML API for SWX).
[as]
//////////////////////////////////////////////////////////////////////
//
// SWXml
//
// Florian Plag / www.video-flash.de
// All SWX sample applications are released under the open source
// MIT License (http://www.opensource.org/licenses/mit-license.php).
//
// This version uses the SWX ActionScript Library.
//
//////////////////////////////////////////////////////////////////////
import org.swxformat.*;
import mx.utils.Delegate;
var swx:SWX;
var myFeed:Array;
var callDetails:Object =
{
serviceClass: „SWXml“,
method: „parseXML“,
args: [„http://swxformat.org/feed/rss2/“],
result: [this, resultHandler],
timeout: [this, timeoutHandler],
debug: true
}
init();
// Carry out SWX call.
swx.call(callDetails);
// ::::::::::::::::::::::::::::::::
// :::::::: init ::::::::::::::::::
// ::::::::::::::::::::::::::::::::
function init()
{
// Create a new SWX object
swx = new SWX();
// swx.gateway = „http://localhost:8888/php/swx.php“;
swx.gateway = „http://www.video-flash.de/swx/php/swx.php“;
swx.encoding = „GET“;
}
// ::::::::::::::::::::::::::::::::
// :::::::: resultHandler :::::::::
// ::::::::::::::::::::::::::::::::
function resultHandler(event:Object)
{
var i:Number;
// save result
myFeed = event.result;
// :::::::: TITLE ::::::::::
// set title
myTitle.dynamicText.text = myFeed.rss[0].channel[0].title[0].text;
// onRelease function for title
myTitle.onRelease = function() {
// goto URL
getURL(myFeed.rss[0].channel[0].link[0].text);
}
// :::::::: ITEMS ::::::::::
// set items
for (i=0; i<5; i++) {
// read title of entry
var s:String = myFeed.rss[0].channel[0].item[i].title[0].text;
// cut after 50 chars if neccessary
if (s.length > 50) {
s = s.substr(0, 50) + „…“;
}
// set item text
this[„item“ + i].dynamicText.text = s;
// create id
this[„item“ + i].id = i;
// onRelease function
this[„item“ + i].onRelease = function() {
// goto URL
getURL(myFeed.rss[0].channel[0].item[this.id].link[0].text);
}
}
}
// :::::::::::::::::::::::::::::::::
// :::::::: timeoutHandler :::::::::
// :::::::::::::::::::::::::::::::::
function timeoutHandler(event:Object)
{
trace („timeout“);
}
// ::::::::::::::::::::::::::::::::
// :::::::: isLoading :::::::::::::
// ::::::::::::::::::::::::::::::::
function isLoading(state:Boolean)
{
trace („loading“);
}
[/as]
hey ein ech klasse ding dieses Widget! Saubere Arbeit
gr33z
compr00t