praticamente io ho due fotogrammi (il primo e il secondo) dove si presenta il codice per la visualizzazione e lo scroll orizzontale dell'rss.
sul primo fotogramma ci sta questo:
sul secondo fotogramma questo:Codice PHP:stop();
// creo una stringa a cui assegno il nome del file esterno da caricare
var xmlFile:String = new String("http://www.repubblica.it/rss/homepage/rss2.0.xml");
// inizializzo un array, che utilizzerò come oggetto contenitore dei dati provenienti da XML
var parsed:Array = new Array();
// inizializzo un'istanza della classe XML per la lettura dei dati esterni
var parser:XML = new XML();
// attivo la proprietà ignoreWhite dell'istanza di XML, in modo di evitare che gli spazi vuoti del documento esterno
// interferiscano con il parsing dei nodi XML
parser.ignoreWhite = true;
// richiamo l'evento onLoad della classe XML che sancisce l'esatto momento in cui Flash ha ricevuto i dati dall'esterno -> if(this.loaded)
// oppure non è stato in grado di comunicare con il file XML, restituendo l'errore conseguente -> "Impossibile aprire news.xml"
parser.onLoad = function(ok) {
if (this.loaded) {
// creo una variabile temporanea a cui associo tutti i nodi <item> sotto forma di elementi di un array
var temp = this.firstChild.childNodes;
// su questa variabile temporanea faccio un ciclo
for (var i = 0; i<temp.length; i++) {
// ed inserisco ad ogni iterazione un object all'interno dell'array
// l'object sarà costituito dagli elementi presenti nel file XML
// "data" che corrisponde al primo elemento di ogni nodo item (gli array hanno base 0, quindi il primo nodo sarà [0])
// "title" corrisponde al secondo elemento, quindi [1]
// "url" corrisponde al terzo elemento, quindi [2]
parsed.push({date:temp[i].childNodes[0].firstChild.toString(), title:temp[i].childNodes[1].firstChild.toString(), url:temp[i].childNodes[2].firstChild.toString(), copyright:temp[i].childNodes[3].firstChild.toString()});
if (i>=temp.length-1) {
gotoAndStop(2);
}
}
} else {
trace("Impossibile aprire "+xmlFile);
}
};
// dopo aver definito l'evento onLoad, attivo il caricamento del file esterno, con il metodo load della classe XML
parser.load(xmlFile);
sicuro sbaglio qualche stupidaggine anche xkè è tutto commentato.Codice PHP:// ancora una volta stoppiamo la timeline
stop();
// utilizziamo la proprietà autoSize della classe TextField, per fare in modo che il campo si adatti alla dimensione del contenuto
newsticker.testo.autoSize = "left";
// rendiamo il nostro campo html=true per fare in modo che i tag html che inseriremo vengano letti come tali
newsticker.testo.html = true;
// applichiamo un ciclo in cui leggeremo ogni valore di tipo object inserito nell'array "parsed"
for (var k = 0; k<parsed.length; k++) {
// aggiungiamo il testo al campo con queste righe:
//
// aggiungo l'indirizzo della pagina con la notizia intera, accedendo alla proprietà "url" di ogni object contenuto nell'array
// aggiungo la data accedendo alla proprietà "date" di ogni object contenuto nell'array
// aggiungo il titolo accedendo alla proprietà "title" di ogni object contenuto nell'array
newsticker.testo.htmlText += "[url='"+parsed[k].url+"']"+parsed[k].date+" "+parsed[k].title+" "+parsed[k].date+" "+parsed[k].copyright+"[/url] - ";
}
// creo una funzione prototipo per la classe MovieClip
MovieClip.prototype.animate = function() {
// inizializzo una variabile che tenga traccia della dimensione massima della maschera (nel nostro caso è 200)
// in questo modo ottengo un punto di partenza da cui far cominciare l'animazione
var limit = this.mask._width;
// inizializzo una variabile che mi indichi il punto in cui l'animazione dovrà finire
// visto che l'animazione va da destra a sinistra, il valore sarà negativo, per ottenerlo moltiplico un vaolre positivo per -1
var end = (this.testo._width)*-1;
// sposto il campo di testo all'inizio del percorso di animazione
this.testo._x = limit;
// applico la tween che muove il campo di testo da "limit" a "end"
this.t = new mx.transitions.Tween(this.testo, "_x", mx.transitions.easing.None.easeNone, limit, end, this.testo._width/20, true);
// ogni volta che l'animazione finisce, viene fatta ricominciare da capo
this.t.onMotionFinished = this.t.start;
};
// richiamo la funzione sul nostro MovieClip "newsticker"
newsticker.animate();
// inizializzo una variabile booleana per verificare se quando il mosue si muove è sul newsticker e di conseguenza ne deve "uscire fuori" (rollout)
var rollout:Boolean = false;
// creo un oggetto "ascoltatore" che tiene traccia degli eventi applicabili alla classe Mouse
var mouseListener:Object = new Object();
// utilizzo l'evento onMouseMove per verificare se il mouse si trova in un determinato momento fuori/dentro newsticker
mouseListener.onMouseMove = function() {
// se la variabile rollout è false, vuol dire che sto entrando (rollover) nel clip newsticker
// se invece è true, vuol dire che ne sto uscendo (rollout)
if (!rollout) {
// se vado sul newsticker blocco l'animazione (if)
// se ne esco, la riattivo (else)
if (newsticker.mask.hitTest(_xmouse, _ymouse)) {
newsticker.t.stop();
} else {
newsticker.t.resume();
rollout = true;
}
} else {
// quando rientro nel newsticker riabilito il primo blocco if/else
if (newsticker.mask.hitTest(_xmouse, _ymouse)) {
rollout = false;
}
}
};
// aggiungo l'ascoltatore alla classe Mouse, in modo da fargli verificare gli eventi sopra descritti
Mouse.addListener(mouseListener);

Rispondi quotando
