- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- caricare testi diversi da file esterni con AS 3
-
caricare testi diversi da file esterni con AS 3
Ho tre pulsanti, premendo ciascuno dei tre devo caricare un testo diverso da file esterni.
La prima volta che entro nel movieclip che contiene i tre pulsanti "forzo" la funzione legata ad uno dei tre in modo che mi carichi comunque il primo testo.
Ecco cosa ho scritto:function sceltaStoria (event:MouseEvent):void
{var pathFile:String = "comitato-storia.txt"
try {
loader.load(requestUrl);
} catch (error:Error) {
trace("function sceltaStoria - File Not Found!!!");
trace(requestUrl);
}};
function sceltaComitato (event:MouseEvent):void
{var pathFile:String = "comitato-comitato.txt"
try {
loader.load(requestUrl);
} catch (error:Error) {
trace(requestUrl);
trace("function sceltaComitato - File Not Found!!!");
}};
function sceltaAttività (event:MouseEvent):void
{
var pathFile:String = "comitato-attività.txt"try {
trace ("sto per fare il loader");
trace (requestUrl);
loader.load(requestUrl);
} catch (error:Error) {
trace(requestUrl);
trace("function sceltaAttività - File Not Found!!!");
}};
pulComComitato.addEventListener(MouseEvent.CLICK, sceltaComitato);
pulComAttività.addEventListener(MouseEvent.CLICK, sceltaAttività);
pulComStoria.addEventListener(MouseEvent.CLICK, sceltaStoria);var pathFile:String = "comitato-storia.txt";
var loader:URLLoader = new URLLoader();
var requestUrl:URLRequest = new URLRequest(pathFile);loader.addEventListener(Event.COMPLETE, completeHandler);
function completeHandler(event:Event):void {
trace ("sono in completeHandler");
var loader:URLLoader = URLLoader(event.target);
var dateTxt:String = loader.data;
txtComitato.htmlText = dateTxt;
trace (dateTxt);
}sceltaStoria(null);
stop();
Il primo caricamento va bene, il testo viene caricato dall'esterno e visualizzato correttamente.
Se poi però faccio click su un altro pulsante il testo non cambia.
Il problema è che da "dentro" le funzioni imposto la variabile "path" correttamente ma quando scatta la funzione completeHandler (chiamata dal listener) che è definita esternamente, va a prendere il valore della variabile "path" vecchio perchè è fuori dalla funzione.
Come risolvere?
Grazie mille
-
Ho "risolto" portando tutto dentro le tre funzioni.
In pratica ho dovuto triplicare il codice... Se facessi mai una cosa del genere in COBOL mi licenzierebbero immediatamente...
Vabeh.
Ciao.function sceltaStoria (event:MouseEvent):void
{cfInAttività.visible = false; cfInComitato.visible = false; cfInStoria.visible = true; pulComStoria.visible = false; pulComComitato.visible = true; pulComAttività.visible = true; var pathFile:String = "comitato-storia.txt"; var loader:URLLoader = new URLLoader(); var requestUrl:URLRequest = new URLRequest(pathFile); try { // carichiamo i dati con il metodo load instanziando la variabile requestUrl loader.load(requestUrl); } catch (error:Error) { } loader.addEventListener(Event.COMPLETE, completeHandler); function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); var dateTxt:String = loader.data; txtComitato.htmlText = dateTxt; }
};
function sceltaComitato (event:MouseEvent):void
{cfInAttività.visible = false; cfInComitato.visible = true; cfInStoria.visible = false; pulComStoria.visible = true; pulComComitato.visible = false; pulComAttività.visible = true; var pathFile:String = "comitato-comitato.txt"; var loader:URLLoader = new URLLoader(); var requestUrl:URLRequest = new URLRequest(pathFile); try { // carichiamo i dati con il metodo load instanziando la variabile requestUrl loader.load(requestUrl); } catch (error:Error) { } loader.addEventListener(Event.COMPLETE, completeHandler); function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); var dateTxt:String = loader.data; txtComitato.htmlText = dateTxt; }
};
function sceltaAttività (event:MouseEvent):void
{cfInAttività.visible = true; cfInComitato.visible = false; cfInStoria.visible = false; pulComStoria.visible = true; pulComComitato.visible = true; pulComAttività.visible = false; var pathFile:String = "comitato-attività.txt"; var loader:URLLoader = new URLLoader(); var requestUrl:URLRequest = new URLRequest(pathFile); try { // carichiamo i dati con il metodo load instanziando la variabile requestUrl loader.load(requestUrl); } catch (error:Error) { } loader.addEventListener(Event.COMPLETE, completeHandler); function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); var dateTxt:String = loader.data; txtComitato.htmlText = dateTxt; }
};
pulComComitato.addEventListener(MouseEvent.CLICK, sceltaComitato);
pulComAttività.addEventListener(MouseEvent.CLICK, sceltaAttività);
pulComStoria.addEventListener(MouseEvent.CLICK, sceltaStoria);sceltaStoria(null);
stop();