Flash: news ticker da ricaricare

Di: diazapam | 26/09/2020 18:37:13
Ciao a tutti,
dovrei realizzare un semplice news ticker a scorrimento orizzontale su una sola riga che prelevi il testo da un file .xml o .txt esterno..e fin quì, anche grazie ai forum, non ci sono problemi. L'swf finale farà parte di un video informativo per un ufficio (quindi non dovrà andare online) e siccome il file .txt o .xml verrà aggiornato di continuo, la mia esigenza è che il file venga ricaricato ad ogni fine scorrimento senza dover far ripartire l'swf per poter leggere le ultime modifiche.
Sapreste indirizzarmi o darmi una mano?
Per comodità e per evitare perdite di tempo vi incollo il codice che ho utilizzato:
[HR]
questo al primo frame:
stop();
var xmlFile:String = new String("news.xm");
var parsed:Array = new Array();
var parser:XML = new XML();
parser.ignoreWhite = true;
parser.onLoad = function(ok) {
if (this.loaded) {
var temp = this.firstChild.childNodes;
for (var i = 0; i<temp.length; i++) {
parsed.push({date:temp[i].childNodes[0].firstChild.toString(), itle:temp[i].childNodes[1].firstChild.toString()});
if(i>=temp.length-1) gotoAndStop(2);
}
} else {
trace("Impossibile aprire "+xmlFile);
}
};
parser.load(xmlFile);
e questo al secondo frame (dove su un altro livello è presente il mc "newsticker" con il campo di testo dinamico e la maschera):
stop();
newsticker.testo.autoSize = "left";
newsticker.testo.html = true;
for (var k = 0; k<parsed.length; k++) {
newsticker.testo.htmlText += "<a href='"+parsed[k].url+"'>"+parsed[k].date+" "+parsed[k].title+"</a> - ";
}
MovieClip.prototype.animate = function() {
var limit = this.mask._width;
var end = (this.testo._width)*-1;
this.testo._x = limit;
this.t = new mx.transitions.Tween(this.testo, "_x", mx.transitions.easing.None.easeNone, limit, end, this.testo._width/20, true);
this.t.onMotionFinished = this.t.start;
};
newsticker.animate();
[HR]
Spero mi possiate dare una mano (anche a pagamento) e vi ringrazio anticipatamente per la disponibilità.
Ciao
Diazapam

Risposte



...vabè, ho avuto zero risposte ma sono riuscito a fare quello che dovevo fare.

Di: diazapam | 26/09/2020 18:38:13


E non la pubblichi la soluzione per gli altri che potranno avere il tuo stesso problema?

Di: Pablito | 26/09/2020 18:38:13


beh, non mi pareva che la cosa avesse stimolato tutto questo interesse..comunque, certo che la pubblico:
[HR]
primo frame:
stop();
var dati:LoadVars = new LoadVars();
dati.onLoad = function(ok):Void {
if(ok){
_root.newsticker.testo.text = dati.testo;
_root.gotoAndStop(2);
}
};
dati.load("news.txt");
secondo frame:
stop();
newsticker.testo.autoSize = "left";
MovieClip.prototype.animate = function() {
var begin = this.mask._width;
var end = (this.testo._width)*-1;
this.testo._x = begin;
this.t = new mx.transitions.Tween(this.testo, "_x", mx.transitions.easing.None.easeNone, begin, end, this.testo._width/20, true);
this.t.onMotionFinished = function(){
_root.gotoAndPlay(1);
}
};
newsticker.animate();
[HR]
(Il livello con la clip del campo di testo del newsticker deve essere presente su entrambi i frame)
Se si vuole fare in modo che la tween della box di testo sia sempre della stessa velocità, nonostante il variare delle sue dimensioni a seconda del testo, si può aggiungere, al secondo frame, un'altra variabile di questo tipo:
var spazio = begin-end;
e alla tween cambiare "this.testo._width/20" con "spazio".
Saluti.

Di: diazapam | 26/09/2020 18:38:13