PDA

Volledige versie bekijken : news ticker


rjongerden
%Europe/Berlin %487 %2005, 12:41
Hoi,

Ik ben al een paar dagen aan het stoeien met het volgende. Ik wil op mijn site een horizontale newsticker plaatsen met het filenieuws van de VID. Ik moet dus met actionscript een RSS feed inladen en uit dit XML bestand moet hij de juiste gegevens halen. Heeft iemand dit al eerder gedaan?
Alle hulp is welkom, ik ben inmiddels langzaam gek aan het worden.

Groetjes Roy :(

Flasher
%Europe/Berlin %492 %2005, 12:49
Zoiets is volgens mij wel eens eerder gedaan, probeer eens te zoeken op dit forum.
Post anders je script/fla ff

rjongerden
%Europe/Berlin %503 %2005, 13:05
Dit is het XML bestand:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="0.91">

<channel>
<title>VID - Actuele verkeersinformatie Nederland</title>
<copyright>Copyright (c) 2004, VID</copyright>
<link>http://www.vid.nl</link>
<language>nl</language>
<description>Actuele situatie op de weg in Nederland</description>
<webMaster>reacties@vid.nl</webMaster>
<pubDate>Tue, 16 Aug 2005 22:43:15 GMT</pubDate>
<ttl>5</ttl>
<item>
<title>Er zijn 4 meldingen, waarvan 1 file (2 km)</title>
<link>http://www.vid.nl/VI/overzicht</link> <category>Verkeersinformatie</category>
</item>
</channel>
</rss>

De twee dikgedrukte regels wil ik hieruit lezen en gebruiken voor mijn nieuwsticker. Ik heb het volgende actionsript:

function loadXML(loaded) {
if (loaded) {
xmlNode = this.firstChild;
caption = [];
url = [];
total = xmlNode.childNodes.length;
for (i=0; i<total; i++) {
caption[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
url[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
}
first_item();
} else {
content = "file not loaded!";
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("http://www.vid.nl/VI/_rss"+new Date().getTime());
//
function first_item() {
delay = 1000;
p = 0;
display(p);
p++;
}
function timer() {
myInterval = setInterval(ticker, delay);
function ticker() {
clearInterval(myInterval);
if (p == total) {
p = 0;
}
fadeout();
}
}
function display(pos) {
over = new TextFormat();
over.underline = true;
//
out = new TextFormat();
out.underline = false;
//
newsMC.newsText._alpha = 100;
newsMC.newsText.text = caption[pos];
newsMC.onRelease = function() {
getURL(url[pos], "_self");
};
newsMC.onRollOver = function() {
this.newsText.setTextFormat(over);
};
newsMC.onRollOut = function() {
this.newsText.setTextFormat(out);
};
timer();
}
function fadeout() {
this.onEnterFrame = function() {
if (newsMC.newsText._alpha>=0) {
newsMC.newsText._alpha -= 5;
} else {
display(p);
p++;
delete this.onEnterFrame;
}
};
}
De bedoeling is dus om juist die twee gegevens te laden, 1 het filenieuws en 2 de link die de bezoeker gebruikt om door te linken naar de vid pagina.

Roy

Flasher
%Europe/Berlin %529 %2005, 13:42
als ik het hele xml document trace krijg ik:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/DTD/loose.dtd"><html><head><title>De VerkeersInformatieDienst</title><style type="text/css">
@import &quot;/vid.css&quot;;
</style><link rel="alternate" title="VID Actueel" type="application/rss+xml" href="http://www.vid.nl/VI/_rss" /></head></html>

volgens mij klopt die url niet helemaal

rjongerden
%Europe/Berlin %672 %2005, 17:07
Vreemd, deze komt rechtstreeks bij de vid vandaan. Nu lukt het mij ook niet om dit voor elkaar te krijgen wanneer het XML bestand lokaal is opgeslagen onder een bepaalde naam.
Ergens zit dus een fout in mij actionscript.

Flasher
%Europe/Berlin %387 %2005, 10:17
ik heb het even geprobeerd en het werkte nadat ik de loadXML functie veranderd had in het volgende:

function loadXML(loaded) {
if (loaded) {
var xmlNode:XMLNode = this.firstChild;
trace(xmlNode);
var caption:Array = [];
var url:Array = [];
var total:Number = xmlNode.childNodes.length;
for (var i = 0; i<total; i++) {
var itemNode:XMLNode = xmlNode.childNodes[i].childNodes[8]
caption[i] = itemNode.firstChild.firstChild.nodeValue;
url[i] = itemNode.childNodes[1].firstChild.nodeValue;
}
first_item();
} else {
content = "file not loaded!";
}
}

p.s. ik neem aan dat er straks meer 'channels' komen (daarvoor is die for loop)