XML Datei schreiben [Flash 11]
| 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> | | | Beiträge: 1004 Registriert: Jul 2008
| 07.09.2012, 00:22
|
|