Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-02-2007, 19:48   #1 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Problem beim auslesen einer XML

Also habe mir überlegt es doch mal so wie iTunes zu machen
und mit einer dynamischeren XML-Datei dem User es zu erlauben
die Oberfläche besser anpassen zu können. Dafür kann er die XML so verändern:
HTML-Code:
<?xml version="1.0" encoding="UTF-8"?>

<folder name="Aggro Berlin">
  <playList name="->Ansage Nr.1">
    <song name="-->Aggro.mp3" />
  </playList>
  <playList name="->Ansage Nr.3">
    <song name="-->Boss.mp3" />
  </playList>
</folder>

<folder name="Frauenarzt">
  <playList name="->Porno Party">
    <song name="-->Komm Lass Uns F**ken.mp3" />
  </playList>
</folder>
so nun möchte ich in Flash natürlich jeden Ordner auslesen -> ihm seine playLists zufügen -> mit den entsprechenden Liedern. Das klapt alles ganz gut bis das es Probleme gibt dies alles in einen Array zu packen:

ActionScript:
  1. var XML_Libary:XML = new XML();
  2. var XML_Folders:Array = [[[]]];
  3.  
  4. XML_Libary.ignoreWhite = true;
  5. XML_Libary.load("Libary.xml");
  6. XML_Libary.onLoad = function(success)
  7. {
  8.     if(success) {
  9.         // <folder>
  10.         for(var i:Number=0; i<XML_Libary.childNodes.length; i++) {
  11.             XML_Folders[i] = XML_Libary.childNodes[i].attributes.name;
  12.            
  13.             // <playList>
  14.             for(var j:Number=0; j<XML_Libary.childNodes[i].childNodes.length; j++) {
  15.                 XML_Folders[i][j] = XML_Libary.childNodes[i].childNodes[j].attributes.name;
  16.                
  17.                 // <song>
  18.                 for(var k:Number=0; k<XML_Libary.childNodes[i].childNodes[j].childNodes.length; k++) {
  19.                     XML_Folders[i][j][k] = XML_Libary.childNodes[i].childNodes[j].childNodes[k].attributes.name;
  20.                 }
  21.             }
  22.         }
  23.         trace(XML_Folders[0][1][0]); // undefined
  24.     }
  25. }
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi
_crypto_ ist offline   Mit Zitat antworten
Alt 12-02-2007, 00:04   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Deine XML ist falsch:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<folders><!-- Ein Wurzelelement fehlte -->
	<folder name="Aggro Berlin">
		<playList name="->Ansage Nr.1">
			<song name="-->Aggro.mp3" />
		</playList>
		<playList name="->Ansage Nr.3">
			<song name="-->Boss.mp3" />
		</playList>
	</folder>
	<folder name="Frauenarzt">
		<playList name="->Porno Party">
			<song name="-->Komm Lass Uns F**ken.mp3" />
		</playList>
	</folder>
</folders>
ActionScript:
  1. XML_Libary.load("Libary.xml");/* Meintest du Library? ;) - also immer? */
Trotzdem schaust nicht ganz richtig aus...
Omega Psi ist offline   Mit Zitat antworten
Alt 12-02-2007, 00:29   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Versuch's mal so:
ActionScript:
  1. var XML_Library:XML = new XML();
  2. var folders:Array = new Array();
  3. XML_Library.ignoreWhite = true;
  4. XML_Library.load("Library.xml");
  5. XML_Library.onLoad = function(success) {
  6.     if (success) {
  7.         for (var i:Number = 0; i<XML_Library.firstChild.childNodes.length; i++) {
  8.             var folder:Folder = new Folder(XML_Library.firstChild.childNodes[i].attributes.name);
  9.             for (var j:Number = 0; j<XML_Library.firstChild.childNodes[i].childNodes.length; j++) {
  10.                 var playlist:Playlist = new Playlist(XML_Library.firstChild.childNodes[i].childNodes[j].attributes.name);
  11.                 for (var k:Number = 0; k<XML_Library.firstChild.childNodes[i].childNodes[j].childNodes.length; k++) {
  12.                     playlist.addSong(XML_Library.firstChild.childNodes[i].childNodes[j].childNodes[k].attributes.name);
  13.                 }
  14.                 folder.addPlaylist(playlist);
  15.             }
  16.             folders.push(folder);
  17.         }
  18.         printFolders();
  19.     }
  20. };
  21. function printFolders() {
  22.     for (var i:Number = 0; i<folders.length; i++) {
  23.         trace(folders[i].getName()); // Folder ausgeben
  24.         for (var j:Number = 0; j<folders[i].playlists.length; j++) {
  25.             trace(folders[i].getPlaylistAt(j).getName());
  26.             for (var k:Number = 0; k < folders[i].getPlaylistAt(j).songs.length; k++) {
  27.                 trace(folders[i].getPlaylistAt(j).getSongAt(k));
  28.             }
  29.         }
  30.     }
  31. }
ActionScript:
  1. class Folder {
  2.     var name:String;
  3.     var playlists:Array;
  4.     public function Folder(name:String) {
  5.         this.name = name;
  6.         this.playlists = new Array();
  7.     }
  8.     public function getName():String {
  9.         return this.name;
  10.     }
  11.     public function addPlaylist(pl:Playlist) {
  12.         this.playlists.push(pl);
  13.     }
  14.     public function getPlaylistAt(index:Number):Playlist {
  15.         return playlists[index];
  16.     }
  17. }
ActionScript:
  1. class Playlist {
  2.     public var name:String;
  3.     public var songs:Array;
  4.     public function Playlist(name:String) {
  5.         this.name = name;
  6.         this.songs = new Array();
  7.     }
  8.     public function getName():String {
  9.         return this.name;
  10.     }
  11.     public function addSong(songname:String) {
  12.         this.songs.push(songname);
  13.     }
  14.     public function getSongAt(index):String {
  15.         return songs[index];
  16.     }
  17. }
Ausgabe:
Zitat:
Aggro Berlin
->Ansage Nr.1
-->Aggro.mp3
->Ansage Nr.3
-->Boss.mp3
Frauenarzt
->Porno Party
-->Komm Lass Uns F**ken.mp3
Ist zwar net so ganz scheyn gekapselt, but u get the idea und es ist später als gedacht...

Btw: Variablenname klein schreiben... liest sich besser, da Klassennamen laut Konvention groß geschieben werden.
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele