Se connecter avec
S'enregistrer | Connectez-vous

AS3 - URLLoader et file

Dernière réponse : dans Programmation

Plop,

J'ai un petit soucis, je souhaite charger mon fichier XML qui se trouve dans mon applicationStorageDirectory puis l'ouvrir avec un URLLoader.
D'où le code suivant :

  1. public class Stockage extends EventDispatcher
  2. {
  3. var chemin:File = File.applicationStorageDirectory;
  4. chemin = chemin.resolvePath('listeProjets.xml');
  5. var c:URLLoader;
  6.  
  7.  
  8.  
  9. public function Stockage(){
  10. c = new URLLoader(new URLRequest(chemin));
  11. etc....


mais ça me met 2 erreurs :
1120: Accès à la propriété non définie chemin. chemin = chemin.resolvePath('listeProjets.xml');
et
1067: Contrainte implicite d'une valeur du type flash.filesystem:File vers un type sans rapport String. c = new URLLoader(new URLRequest(chemin));

la 1067 veux dire que URLLoader attend un string et que moi je lui donne un file, mais je vois pas comment faire autrement et la 1120 je pige pas car le fichier porte bien ce nom et se situe bien dans le bon dossier.

Merci d'avance,

Autres pages sur : as3 urlloader file

Lassé par la pub ? Créez un compte
Expert Programmation

Bonjour,

Je ne comprend pas trop l'utilité du "applicationStorageDirectory", mais en tout cas l'objet URLRequest est clair, il s'agit d'une URL relative ou absolue.

Pour faire plus simple et charger ton XML tu devrais le mettre avec ton SWF (ou ailleurs mais en accès web http) :

  1. var xmlLoader:URLLoader = new URLLoader();
  2.  
  3. xmlLoader.addEventListener(Event.COMPLETE, showXML);
  4. xmlLoader.load( new URLRequest("monFichierXml.xml") );
  5.  
  6. function showXML(e:Event):void {
  7. XML.ignoreWhitespace = true;
  8. var myXmlFile:XML = new XML(e.target.data);
  9. }


Avec ça on devrait pouvoir ouvrir le fichier xml "monFichierXml.xml" se trouvant dans le même dossier que l'animation flash (les 2 dans un dossier accessible en HTTP).

Pour informations :

Citation :
File.applicationStorageDirectory =
  • Windows XP: c:\Documents and Settings\USERNAME\Application Data\APP_NAME
  • Win Vista/7: c:\users\USERNAME\appdata\roaming\APP_NAME
  • OSX: /Users/USERNAME/Library/Preferences/APP_NAME
  • Linux (ubuntu): /Users/USERNAME/.appdata/


  • Donc à moins de créer le fichier par l'application sur chaque client (individu lambda qui voudra lire ton truc), et là en plus il faut les droits ... Je vois pas l'intérêt...
    Si c'est vraiment ton but, il ne faut pas utiliser l'objet "URLloader" mais un "FileStream" :

    1. var file:File = File.applicationStorageDirectory.resolvePath('listeProjets.xml');
    2. var fileStream:FileStream = new FileStream();
    3. fileStream.open(file, FileMode.READ);
    4. var prefsXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
    5. fileStream.close();



    En fait, tout dépend de ce que tu souhaites faire, mais il faut bien comprendre la différence entre "local" et "distant" ...
    Lassé par la pub ? Créez un compte
    Tom's guide dans le monde