Se connecter / S'enregistrer
Votre question

AS3 - URLLoader et file

Tags :
  • Programmation
Dernière réponse : dans Programmation
31 Mai 2010 22:58:16

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

1 Juin 2010 11:47:40

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" ...
    m
    0
    l
    Tom's guide dans le monde
    • Allemagne
    • Italie
    • Irlande
    • Royaume Uni
    • Etats Unis
    Suivre Tom's Guide
    Inscrivez-vous à la Newsletter
    • ajouter à twitter
    • ajouter à facebook
    • ajouter un flux RSS