Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-05-2004, 16:12   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 9
Question Probleme mit XML-Einlesen

ActionScript:
  1. var taktik_step = new Array()
  2. var stepnr = new Array()
  3. var descript = new Array()
  4. var ball_x = new Array()
  5. var ball_y = new Array();
  6.  
  7. Playa= function( ){} 
  8. Playa.prototype.player_name = ""
  9. Playa.prototype.playernr = 8
  10. Playa.prototype.player_x = 100
  11. Playa.prototype.player_x = 100;   
  12.  
  13. player = new Array();//array für die steps     
  14.  
  15. xmlData = new XML()
  16. xmlData.ignoreWhite = true
  17. xmlData.load ("taktikstream1.xml");   
  18.  
  19. _level0.z=0;   
  20.  
  21. xmlData.onLoad = function (success)   {         
  22.    if (success)      
  23.    {       
  24.       for (var a = 0; a<xmlData.firstChild.childNodes.length; a++)
  25.       {              
  26.            var tmpnodea=xmlData.firstChild.childNodes[a].nodeName;            var tmpvala=xmlData.firstChild.childNodes[a].firstChild.nodeValue;                             
  27.            if (tmpnodea=="taktik_step") {         
  28.                _level0.z=0;                 
  29.                _level0.player[a]=new Array(Playa);   
  30.           }                
  31.           for (var b = 0; b<xmlData.firstChild.childNodes[a].childNodes.length; b++) {
  32.             var tmpnodeb=xmlData.firstChild.childNodes[a].childNodes[b].nodeName;                   
  33.                 var tmpvalb=xmlData.firstChild.childNodes[a].childNodes[b].firstChild.nodeValue;                     
  34. for (var c = 0; c<xmlData.firstChild.childNodes[a].childNodes[b].childNodes.length; c++) {                          var tmpnodec=xmlData.firstChild.childNodes[a].childNodes[b].childNodes[c].nodeName;                    var tmpvalc=xmlData.firstChild.childNodes[a].childNodes[b].childNodes[c].firstChild.nodeValue;                    trace(tmpvalc);              switch (tmpnodec)                    {                              case "playernr":_level0.player[a][_level0.z].playernr=tmpvalc;break;                case "player_name":_level0.player[a][_level0.z].player_name=tmpvalc;break;                case "player_x":_level0.player[a][_level0.z].player_x=tmpvalc;break;                              case "player_y":_level0.player[a][_level0.z].player_y=tmpvalc;_level0.z=_level0.z+1;break;                          }        //trace (tmpvalc);                  }               }     }        trace(_level0.player[0][1].player_name);                    trace(_level0.player[1][0].player_name);        trace(_level0.player[1][1].player_name);              trace(_level0.player[2][0].player_name);        trace(_level0.player[2][1].player_name);          }  }    /*for (x=0;x<11;x++)  {        player[x]=spielfigur;          spielfigur.duplicateMovieClip(player[x],x);        player[x]._x=spielsystem_x[x];        player[x]._y=spielsystem_y[x];    }*/
  35.  
rognox ist offline   Mit Zitat antworten
Alt 10-05-2004, 16:44   #2 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hallo und Willkommen im FF.

vielleicht zunächst ein kleiner Hinweis:
du solltest deinem Post eine konkrete Fragen beimischen, damit Auskunftswillige eine Chance haben, dir bei deinem Problem zu helfen. Code-Beispiele zur Veranschaulichung sind sicherlich gut und richtig, ohne eine genaue Beschreibung der Problematik wird sich das aber keiner durchlesen, um dann zu raten, was dein Problem ist - so wie ich...

Was genau ist also dein Problem? An welcher Stelle kommst du nicht weiter? Was hast du ggf. schon probiert? Etc.pp...

Schöne Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 10-05-2004, 17:02   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 9
Smile Du hast Recht....

..

Hallo Sascha,

natürlich hast du Recht, ich bin beim Formatieren des Codes ausversehen auf "Return" gekommen und habe die Frage deshalb unvollständig abgeschickt.

Habe jetzt leider keine Zeit, ich poste mein Problem morgen noch einmal ausführlich, es wäre nett, wenn du dir es dir dann noch einmal ansehen könntest.

Vielen Dank.

rognox
rognox ist offline   Mit Zitat antworten
Alt 11-05-2004, 14:51   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 9
Question Probleme XML in Arraystruktur lesen

Ich habe folgenden Code und möchte damit ein XML-File in eine Arraystruktur einladen.

Leider gibt mir die Trace-Ausgabe anstelle von "Toin" undefined aus. Ich finde den Fehler aber nicht. Wer kann mir helfen? Gibt es andere (bessere) Methoden, dies umzusetzen (gibt es zweifelsfrei, oder?.*g)

Vielen Dank.

ActionScript:
  1. var taktik_step = new Array();
  2. var stepnr = new Array();
  3. var descript = new Array();
  4. var ball_x = new Array();
  5. var ball_y = new Array();
  6. var testdata="nichts";
  7.  
  8. Playa= function( ){}
  9. Playa.prototype.player_name = "Checker";
  10. Playa.prototype.playernr = 8;
  11. Playa.prototype.player_x = 100;
  12. Playa.prototype.player_x = 100;
  13.  
  14. player = new Array();//array für die steps
  15.  
  16. //trace(player[0][0].x);
  17. //trace(player[0][0].name);
  18.  
  19. xmlData = new XML();
  20. xmlData.ignoreWhite = true;
  21. xmlData.load ("taktikstream1.xml");
  22.  
  23. _level0.z=0;
  24.  
  25. xmlData.onLoad = function (success)
  26. {
  27.         if (success)
  28.         {
  29.             for (var a = 0; a<xmlData.firstChild.childNodes.length; a++) {
  30.                var tmpnodea=xmlData.firstChild.childNodes[a].nodeName;
  31.                var tmpvala=xmlData.firstChild.childNodes[a].firstChild.nodeValue;
  32.                  
  33.                if (tmpnodea=="taktik_step")
  34.                {
  35.                    _level0.z=0;
  36.                    _level0.player[a]=new Array(Playa);
  37.                    trace(a);
  38.                }
  39.                for (var b = 0; b<xmlData.firstChild.childNodes[a].childNodes.length; b++) {
  40.                  var tmpnodeb=xmlData.firstChild.childNodes[a].childNodes[b].nodeName;
  41.                  var tmpvalb=xmlData.firstChild.childNodes[a].childNodes[b].firstChild.nodeValue;
  42.                  //trace (tmpvalb);
  43.                  for (var c = 0; c<xmlData.firstChild.childNodes[a].childNodes[b].childNodes.length; c++) {
  44.                         var tmpnodec=xmlData.firstChild.childNodes[a].childNodes[b].childNodes[c].nodeName;
  45.                         var tmpvalc=xmlData.firstChild.childNodes[a].childNodes[b].childNodes[c].firstChild.nodeValue;
  46.                         switch (tmpnodec)
  47.                         {
  48.                             case "playernr":_level0.player[a][_level0.z].playernr=tmpvalc;break;
  49.                             case "player_name":_level0.player[a][_level0.z].player_name=tmpvalc;trace(a+","+z+","+tmpvalc);break;
  50.                             case "player_x":_level0.player[a][_level0.z].player_x=tmpvalc;break;
  51.                             case "player_y":_level0.player[a][_level0.z].player_y=tmpvalc;_level0.z++;break;
  52.                         }
  53.                         //trace (tmpvalc);
  54.                  }   
  55.                }
  56.             }
  57.             trace("1,0"+_level0.player[1][0].player_name);
  58.             trace("1,1"+_level0.player[1][1].player_name);
  59.             trace("2,0"+_level0.player[2][0].player_name);
  60.             trace("2,1"+_level0.player[2][1].player_name);
  61.         }
  62. }


Dieses Script bezieht sich auf eine XML-Datei mit folgendem Inhalt:

Code:
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE taktiken [
	<!ELEMENT taktikstream (taktikstream_name?,taktik_step+)>
	<!ELEMENT taktik_step (stepnr?,descript?,player+,ball*)>
	<!ELEMENT player (playernr?,player_name?,player_x,player_y)>
	<!ELEMENT ball (ball_x,ball_y)>
	
]>

<taktikenstream>
	<taktikstream_name>first taktik</taktikstream_name>
	<taktik_step>
		<stepnr>1</stepnr>
		<descript>ball abfangen</descript>
		<player>
			<playernr>8</playernr>
			<player_name>Maex</player_name>
			<player_x>200</player_x>
			<player_y>300</player_y>
		</player>
		<player>
			<playernr>9</playernr>
			<player_name>Toin</player_name>
			<player_x>400</player_x>
			<player_y>300</player_y>
		</player>
		<ball>
			<ball_x>200</ball_x>
			<ball_y>300</ball_y>
		</ball>
	</taktik_step>
	<taktik_step>
		<stepnr>2</stepnr>
		<descript>kreuzen</descript>
		<player>
			<playernr>8</playernr>
			<player_name>Maex</player_name>
			<player_x>400</player_x>
			<player_y>200</player_y>
		</player>
		<player>
			<playernr>9</playernr>
			<player_name>Toin</player_name>
			<player_x>200</player_x>
			<player_y>200</player_y>
		</player>
		<ball>
			<ball_x>200</ball_x>
			<ball_y>210</ball_y>
		</ball>
	</taktik_step>
</taktikenstream>
rognox ist offline   Mit Zitat antworten
Alt 11-05-2004, 16:03   #5 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,

das ist mein Trace-Ergebnis (hab alles genau so kopiert, wie es hier steht...):

Code:
1
1,0,Maex
1,1,Toin
2
2,0,Maex
2,1,Toin
1,0Maex
1,1
2,0Maex
2,1
Kommt da bei dir undefined?

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 11-05-2004, 16:14   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 9
Hallo Sascha,

es geht um die Ausgabe:

ActionScript:
  1. trace("1,0"+_level0.player[1][0].player_name);
  2. trace("1,1"+_level0.player[1][1].player_name);
  3. trace("2,0"+_level0.player[2][0].player_name);
  4. trace("2,1"+_level0.player[2][1].player_name);
am Ende des Codes.

Stimmt, da gibt es kein undefined mehr, aber es sollte:

1,0Maex
1,1Toin
2,0Maex
2,1Toin

ergeben

und nicht

1,0Maex
1,1
2,0Maex
2,1

Warum wird der zweite Entry (Toin) nicht gespeichert?

Vielen Dank.
rognox ist offline   Mit Zitat antworten
Alt 11-05-2004, 20:49   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 9
Thumbs up Hab den Fehler gefunden...

...bin noch nicht so firm, war ein Fehler in der Arraydeklaration.

Vielen Dank aber für deine Bemühungen, Sascha.

Folgender Code funktioniert:

ActionScript:
  1. var taktik_step = new Array();
  2. var stepnr = new Array();
  3. var descript = new Array();
  4. var ball_x = new Array();
  5. var ball_y = new Array();
  6. var testdata="nichts";
  7.  
  8. Playa= function( ){}
  9. Playa.player_name = "Checker";
  10. Playa.playernr = 8;
  11. Playa.player_x = 100;
  12. Playa.player_x = 100;
  13.  
  14. player = [[],[Playa]];
  15.  
  16. xmlData = new XML();
  17. xmlData.ignoreWhite = true;
  18. xmlData.load ("taktikstream1.xml");
  19.  
  20. _level0.y=-1;
  21. _level0.z=0;
  22.  
  23. xmlData.onLoad = function (success)
  24. {
  25.         if (success)
  26.         {
  27.             for (var a = 0; a<xmlData.firstChild.childNodes.length; a++) {
  28.                var tmpnodea=xmlData.firstChild.childNodes[a].nodeName;
  29.                var tmpvala=xmlData.firstChild.childNodes[a].firstChild.nodeValue;
  30.                _level0.player.push([a]);
  31.               
  32.                if (tmpnodea=="taktik_step")
  33.                {
  34.                    _level0.y++;
  35.                    _level0.z=0;
  36.                }
  37.                for (var b = 0; b<xmlData.firstChild.childNodes[a].childNodes.length; b++) {
  38.                  var tmpnodeb=xmlData.firstChild.childNodes[a].childNodes[b].nodeName;
  39.                  var tmpvalb=xmlData.firstChild.childNodes[a].childNodes[b].firstChild.nodeValue;
  40.                  
  41.                     if (tmpnodeb=="player")
  42.                  {
  43.                         _level0.player[_level0.y].push(new Array(Playa));
  44.                     }
  45.                  for (var c = 0; c<xmlData.firstChild.childNodes[a].childNodes[b].childNodes.length; c++) {
  46.                         var tmpnodec=xmlData.firstChild.childNodes[a].childNodes[b].childNodes[c].nodeName;
  47.                         var tmpvalc=xmlData.firstChild.childNodes[a].childNodes[b].childNodes[c].firstChild.nodeValue;
  48.                         switch (tmpnodec)
  49.                         {
  50.                             case "playernr":_level0.player[_level0.y][_level0.z].playernr=tmpvalc;break;
  51.                             case "player_name":_level0.player[_level0.y][_level0.z].player_name=tmpvalc;break;
  52.                             case "player_x":_level0.player[_level0.y][_level0.z].player_x=tmpvalc;break;
  53.                             case "player_y":_level0.player[_level0.y][_level0.z].player_y=tmpvalc;_level0.z++;break;
  54.                         }
  55.                  }   
  56.                }
  57.             }
  58.             trace(_level0.player[0][0].playernr);
  59.             trace(_level0.player[0][0].player_name);
  60.             trace(_level0.player[0][0].player_x);
  61.             trace(_level0.player[0][0].player_y);
  62.            
  63.             trace(_level0.player[0][1].playernr);
  64.             trace(_level0.player[0][1].player_name);
  65.             trace(_level0.player[0][1].player_x);
  66.             trace(_level0.player[0][1].player_y);
  67.            
  68.             trace(_level0.player[1][0].playernr);
  69.             trace(_level0.player[1][0].player_name);
  70.             trace(_level0.player[1][0].player_x);
  71.             trace(_level0.player[1][0].player_y);
  72.            
  73.             trace(_level0.player[1][1].playernr);
  74.             trace(_level0.player[1][1].player_name);
  75.             trace(_level0.player[1][1].player_x);
  76.             trace(_level0.player[1][1].player_y);         
  77.         }
  78. }
rognox 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 02:55 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele