J'essaie de faire quelque chose d'extrêmement simple: écrire une fonction qui lit le texte d'un fichier texte et renvoie le texte dans une chaîne en utilisant AS3.Chargement et retour de données texte avec ActionScript 3 (URLLoader)
La fonction
public function readData(path:String):String
{
var dataSet:String;
var urlRequest:URLRequest = new URLRequest(path);
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
urlLoader.load(urlRequest);
function urlLoader_complete(evt:Event):void {
dataSet = urlLoader.data;
trace(dataSet)
}
trace(dataSet);
return dataSet;
}
Appel de la fonction
var dataString:String = aq.readData("http://example.com/data.txt");
trace(dataString);
Ce code renvoie une chaîne vide quand je le lance. Pourquoi?
EDIT: Ok, je vois maintenant que cela ne fonctionne pas car urlLoader agit de manière asynchrone. J'écris un programme qui lit dans un fichier de données et agit dessus. Cela signifie-t-il que je dois écrire le reste de mon programme à l'intérieur de function urlLoader_complete
? Ou devrais-je mettre le programme en pause jusqu'à ce que urlLoader
soit terminé?
promouvoir 'urlLoader_complete()' être une fonction de classe au lieu d'une fonction locale, puis Utilisez-le pour continuer votre programme. Vous pouvez utiliser des rappels, des événements, ou 'Signals' (https://github.com/robertpenner/as3-signals) pour notifier votre autre code que le chargement a terminé – divillysausages