{lang: 'de'}
Flashhilfe.de - Flash Community

XML Datei schreiben [Flash 11]

 


AntwortenRegistrieren Seite1  

Renao#1
Benutzerbild von Renao
Beiträge: 1
Registriert: Aug 2012

16.08.2012, 14:04

Hallo Leute,

ich arbeite zum ersten Mal mit Flash, habe allerdings schon Erfahrungen mit Director sammeln dürfen, sodass ich vom grundlegenden Konzept der Autorensoftware Bescheid wissen sollte.

Im Moment sitze ich an einem kleinen Spiel, das lokal auf einem Rechner laufen soll. Die Highscoredaten sollten idealerweise extern gespeichert werden - zur einfachen Weiterverarbeitung habe ich mir gedacht, dass sich da eine XML-Datei am Besten anbieten würde.

Soweit, so gut - ich habe nun eine XML-Datei erstellt und diese erfolgreich via ActionScript auslesen können - nur bekomme ich nun partout Fehler, wenn ich eine XML-Datei nun auch schreiben möchte.

Daher würde es mich interessieren, ob ich ggf. einfach generell was grundlegendes falsch mache oder vielleicht ja auch nur irgendeinen kleinen Fehler in meinen Überlegungen habe.

Hier mal mein aktueller Code zum Thema:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;

stop();

var myXML:XML;
var highscores:Array;

// XML Datei laden //
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("2012-08-14.xml"));

myLoader.addEventListener(Event.COMPLETE, highscoreEintragen);

// Datensätze auslesen //
function highscoreEintragen(e : Event) : void {
     myXML = new XML(e.target.data);
     var highscores:Array = new Array();
     var i = myXML.score.length();
 
     
     var points : int;
     var user : String;
     var city : String;
     
     trace("Lade " + i + " Einträge...");
     while (i > 0) {
 
        
        trace("Eintrag: " + i);
        points = int(myXML.score[i-1]);
        trace(points);
        
        user = myXML.score[i-1].@user;
        trace(user);
        city = myXML.score[i-1].@city;      
        trace(city);
        trace("-------------");
        highscores.push({punkte:points, benutzer:user, stadt:city});
        
        i--;
     }
     highscores.sortOn("punkte", Array.NUMERIC | Array.DESCENDING);
     trace("Array sortiert...");
     trace(highscores[0].punkte);
     trace(highscores[1].punkte);
     trace(highscores[2].punkte);
     
     speichern("XMLHeute.xml");
     
}


function speichern(url:String) : void {
     
      var datei:XML = <highscore></highscore>;
      trace("Datei speichern...");
     var j = 3;
     trace("a");
     while (j > 0) {
        trace("a");
         var item:XML = <score />
         item.@user = highscores[j-1].benutzer
        item.@city = highscores[j-1].stadt
        item.score = highscores[j-1].punkte;
         datei.appendChild(item);
     j--;
     }
     
      
      // XML in Binärdaten //
    var ba:ByteArray = new ByteArray( );
      ba.writeUTFBytes( datei );
      
      // Speichern //
    var fr:FileReference = new FileReference( );
      fr.save( ba, url );


Vielen Dank für jeden hilfreichen Hinweis oder Tipp! :)

P.S.:

Die XML-Datei hat folgenden Aufbau:

<highscore>
<score user='name' city='stadt'>Punktestand</score>
<score user='name' city='stadt'>Punktestand</score>
...
<score user='name' city='stadt'>Punktestand</score>
</highscore>
Schlagwörter: Highscore, XML-Datei
Kerstin77#2
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

07.09.2012, 00:22