Dieses Tutorial zeigt drei Wege, wie man Daten in einer externen Datei schreibt und diese später wieder auslesen kann. In jedem Beispiel verwenden wir die folgenden drei Variablen:
Framereate = 30
screenWidth = 1280
screenHeight = 1024
Der folgende Code erstellt eine einfache Text-Datei. Deren Inhalt sieht wie folgt aus:
30
1280
1024
//javascript Version einer 'Objekt-Klasse' function PersistantData(fr, sw, sh) { this.framerate = fr; this.screenWidth = sw; this.screenHeight = sh; } //deklariert, aber nicht definiert var pd; //prüfen, ob die Datei schon existiert function onInit() { if(system.file.exists(system.folders.document+"persistantData.txt")) { //wenn sie existiert, dann wird sie geöffnet var fileIn = system.file.openRead(system.folders.document+"persistantData.txt"); //die Daten werden in ein Array geladen var dataArray = fileIn.readStringArray(); //und die Datei wird wieder geschlossen fileIn.close(); //Daten an die parsePD Funktion übergeben parsePD(dataArray); } else //falls die Datei nicht existiert { //erzeugen einer neuen Datei var fileOut = system.file.openWrite(system.folders.document+"persistantData.txt"); //erzeugen eines neuen Arrays var dataArray = new Array("30", "1280", "1024"); //und das Ganze exportieren fileOut.writeStringArray(dataArray); //Datei wieder schließen fileOut.close(); //Daten an die parsePD Funktion übergeben parsePD(dataArray); } } //neues "PersistantData"-Objekt mit den übergebenen Daten erzeugen function parsePD(pdArray) { //neues Objekt (pd) erzeugen pd = new PersistantData(pdArray[0], pdArray[1], pdArray[2]); }
Dieser Code erzeugt eine Text-Datei die folgendermaßen aussieht:
({framerate:30, screenWidth:1280, screenHeight:1024})
//javascript Version einer 'Objekt-Klasse' function PersistantData(fr, sw, sh) { this.framerate = fr; this.screenWidth = sw; this.screenHeight = sh; } // pd deklarieren var pd; function onInit() { // prüfen, ob die Datei schon existiert if(system.file.exists(system.folders.document+"persistantData.txt")) { // Datei einlesen var fileIn = system.file.openRead(system.folders.document+"persistantData.txt"); // Daten in ein PersistantData-Objekt umwandeln pd = eval(fileIn.readString()); // Datei schließen fileIn.close(); } else // falls die Datei nicht (mehr) existiert { // neues "PersistantData"-Objekt erzeugen und standard Werte zuweisen pd = new PersistantData(30, 1280, 1024); // erstellen und öffnen einer Datei namens 'persistantData.txt' var fileOut = system.file.openWrite(system.folders.document+"persistantData.txt"); // Objekt in String umwandeln und in die Datei schreiben fileOut.writeString(pd.toSource()); // Datei schließen fileOut.close(); } }
Die aus diesem Code resultierende .xml Datei sieht so aus:
<persistantData> <framerate>30</framerate> <screenWidth>1280</screenWidth> <screenHeight>1024</screenHeight> <persistantData>
//javascript Version einer 'Objekt-Klasse' function PersistantData(fr, sw, sh) { this.framerate = fr; this.screenWidth = sw; this.screenHeight = sh; } // pd deklarieren var pd; function onInit() { // prüfen, ob die Datei existiert if(system.file.exists("persistantData.xml")) { // wenn sie existiert, dann laden var fileIn = system.xml.loadDocument("persistantData.xml"); // und an die "parsePD" Funktion übergeben parsePD(fileIn); } else // wenn sie nicht existiert, dann wird sie erzeugen { var fileOut = system.xml.createDocument(); // mit Hilfsfunktionen werden die XML Daten erzeugt fileOut.addChild("persistantData"); fileOut.selectSingle("persistantData").addChild("framerate").text = "[30]"; fileOut.selectSingle("persistantData").addChild("screenWidth").text = "[1280]"; fileOut.selectSingle("persistantData").addChild("screenHeight").text = "[1024]"; // Datei speichern fileOut.save(system.folders.document+"persistantData.xml"); // Daten an die "parsePD"-Funktion übergeben parsePD(fileOut); } } //Funktion um die XML Daten in ein "PersistantData"-Objekt zu konvertieren function parsePD(xmlFile) { // neues Objekt aus den XML Daten erzeugen pd = new PersistantData(parseInt(xmlFile.selectSingle("persistantData").selectSingle("framerate").text), parseInt(xmlFile.selectSingle("persistantData").selectSingle("screenWidth").text), parseInt(xmlFile.selectSingle("persistantData").selectSingle("screenHeight").text)); }