Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-05-2005, 08:35   #1 (permalink)
Flashtestdummy
 
Benutzerbild von Alex_R
 
Registriert seit: Mar 2003
Beiträge: 153
XML? Wo ist den mein Fehler?

Servus

Ich habe folgendes Script:
Code:
xmlAufbauEins = new XML();
xmlAufbauEins.ignoreWhite = true;
xmlAufbauEins.load("http://www.roadrunnerrecords.com/blabbermouth.net/newsfeed.xml");
xmlAufbauEins.onLoad = function(AufbauEins)
{
	anzahlSchlagzeilenEins = (xmlAufbauEins.firstChild.firstChild.childNodes.length)-4;
	for (i=0; i<anzahlSchlagzeilenEins; i++)
	{
		newMCEins = MC.duplicateMovieClip("MC"+i, i);
		newMCEins._y = MC._y+MC._height*i;
		MC.steuerZahl = 4;
		newMCEins.steuerZahl = i+4;
		// schlagzeile auslesen
		newMCEins.schlagzeile = xmlAufbauEins.firstChild.firstChild.childNodes;
		newMCEins.schlagzeileIndex = newMCEins.schlagzeile[newMCEins.steuerZahl].childNodes;
		newMCEins.schlagzeileHead = newMCEins.schlagzeileIndex[0].firstChild;
		newMCEins.schlagzeileLink = newMCEins.schlagzeileIndex[1].firstChild;
		newMCEins.schlagzeileDescription = newMCEins.schlagzeileIndex[2].firstChild;
		// schlagzeile anzeigen
		newMCEins.schlagzeileAusgabe.html = true;
		newMCEins.schlagzeileAusgabe.htmlText = newMCEins.schlagzeileHead;
		newMCEins.schlagzeileAusgabe.textColor = 0xFFFFFF;
		newMCEins.schlagzeileAusgabeSchatten.html = true;
		newMCEins.schlagzeileAusgabeSchatten.htmlText = newMCEins.schlagzeileHead;
		newMCEins.schlagzeileAusgabeSchatten.textColor = 0x000000;
		// beschreibung anzeigen
		newMCEins.descriptionAusgabe.text = newMCEins.schlagzeileDescription;
		//suchen und ersetzen (link)
		var flooring:XML = new XML();
		flooring.ignoreWhite = true;
		flooring.onLoad = function(success)
		{
			a = (flooring.childNodes[0].childNodes[0].childNodes[newMCEins.steuerZahl].childNodes[1].firstChild);
			b = "&amp;";
			SearchDestroy(a, b, "&");
		};
		flooring.load("http://www.roadrunnerrecords.com/blabbermouth.net/newsfeed.xml");
		//suche in a nach b und ersetze durch c 
		function SearchDestroy(a, b, c)
		{
			d = String(a).indexOf(b);
			e = String(a).slice(0, d);
			f = String(a).slice(d+b.length, String(a).length);
			newMCEins.link = e+c+f;
			trace(newMCEins.link);
		}
	}
};
Mein Problem ist jetzt, das der letzte Befehl
Code:
trace(newMCEins.link);
nicht ausgeführt wird. Bzw. mir nicht das richtige "ding" spuckt. Das Script zerstückelt mir eine Zeile aus dem XML und ersetzt das &amp; gegen ein &. In einer anderen Variation hat es schon funktioniert. Dort war das Script ledeglich nicht in der for Schleife, sondern direkt auf einem MC gelegen. So kam "steuerzahl" auch direkt von aussen. Aber kann es daran liegen? Ich wollte mein Flash ein bischen umbauen um es flexibler zu machen und jetzt werkel ich scho über nen Tag dran rum und kriegs nimmer hin.

Wär cool wenn mir einer sagen könnte an was es liegt.

Danke schonmal
Alex_R ist offline   Mit Zitat antworten
Alt 24-05-2005, 08:56   #2 (permalink)
Neuer User
 
Benutzerbild von derschatten-nrw
 
Registriert seit: May 2003
Ort: Düsseldorf
Beiträge: 381
Gut wäre es wenn du ein kleines Beispiel mit XML Datei posten könntest, dann wäre es sicher einfacher den Fehler zu finden, da wir deine XML Struktur ja nicht kennen.
derschatten-nrw ist offline   Mit Zitat antworten
Alt 24-05-2005, 08:59   #3 (permalink)
Flashtestdummy
 
Benutzerbild von Alex_R
 
Registriert seit: Mar 2003
Beiträge: 153
Nunja wie auch schon oben in meinem Script mit drin steht, ich greife auf diese XML Datei zu: http://www.roadrunnerrecords.com/bla...t/newsfeed.xml

Aber mein Problem ist ja eigentlich nicht, das ich nicht richtig auf die XML Datei zugreifen kann. Meine Textfelder werde ja mit den richtigen Daten gefüttert. Lediglich das "zerpflücken" des Links funktioniert nicht. Ich dachte das hängt vielleicht mit der for Schleife zusammen.
Alex_R ist offline   Mit Zitat antworten
Alt 24-05-2005, 09:06   #4 (permalink)
Neuer User
 
Benutzerbild von derschatten-nrw
 
Registriert seit: May 2003
Ort: Düsseldorf
Beiträge: 381
Sorry, hab ich beim ersten kurzen Überflogen übersehen...Warum lädst du denn die Datei 2 Mal ?

Geändert von derschatten-nrw (24-05-2005 um 09:10 Uhr)
derschatten-nrw ist offline   Mit Zitat antworten
Alt 24-05-2005, 09:15   #5 (permalink)
Flashtestdummy
 
Benutzerbild von Alex_R
 
Registriert seit: Mar 2003
Beiträge: 153
Das ist richtig. Aber nehme ich diese "zerschnipsel" Funktion aus der for Schleife und trace(newMCEins.link), spuckt er mir die richtige URL. Aber dann halt nur die, die mit der letzten Steuer zahl entstanden ist. Sprich die letzte URL, die in der XML Datei angegeben ist.
Alex_R ist offline   Mit Zitat antworten
Alt 24-05-2005, 09:19   #6 (permalink)
Flashtestdummy
 
Benutzerbild von Alex_R
 
Registriert seit: Mar 2003
Beiträge: 153
Achso, k ich versuch es mal zu erklären.

Beim ersten mal laden, werden die Daten rausgezogen und an Textfelder übergeben. Zusätzlich wird der MC in dem alles drin ist so oft dupliziert, wie der <item> tag in der XML Datei vorhanden ist.

Beim zweiten mal laden, rufe ich wohl eine funktion auf, die mir die Zeile mit dem Link aus dem XML nimmt und mir das "&amp;" in ein "&" umwandelt, sadass ich den Link auf einen Button legen und draufklicken kann. Den wenn in dem Link ein &amp; vorkommt, wird natürlich die falsche seite angezeigt.
Allerdings habe ich diese funktion nicht selbst geschrieben, daher weiss ich nicht genau, inwiefern ich sie mit eine for Schleife kombinieren kann.
Alex_R ist offline   Mit Zitat antworten
Alt 24-05-2005, 09:22   #7 (permalink)
Neuer User
 
Benutzerbild von derschatten-nrw
 
Registriert seit: May 2003
Ort: Düsseldorf
Beiträge: 381
Trace doch mal eine "steuerzahl" bei mir ist sie undefined
derschatten-nrw ist offline   Mit Zitat antworten
Alt 24-05-2005, 09:29   #8 (permalink)
Flashtestdummy
 
Benutzerbild von Alex_R
 
Registriert seit: Mar 2003
Beiträge: 153
Also wenn ich newMCEins.steuerZahl irgendwo vor der "flooring" Funktion trace gibt er mit die zahlen 4-18 raus. Trace ich sie jedoch in der "flooring" Funktion bekomme ich gar keine Meldung. Wie schon gesagt, ich glaube die Funktion wird gar nicht erst ausgeführt. Von daher kann ich also gar keinen link bakommen, weil die Variable nie gesetzt wird. Aber wie muss ich es den Umstellen, das es das tut was ich will? Wenn ich die Funktion aus der for Schleife nehme, bekomme ich nur einen Link ausgewertet und wenn ich sie komplett rausnehme gar keinen. Schreibe ich sie in die for Schleife wird sie nicht ausgeführt, aber warum? Ich glaube es hängt einfach an einer kleinen Geschichte, das ich vergesse zu fragen obs geladen ist oder so.
Alex_R ist offline   Mit Zitat antworten
Alt 24-05-2005, 09:52   #9 (permalink)
Neuer User
 
Benutzerbild von derschatten-nrw
 
Registriert seit: May 2003
Ort: Düsseldorf
Beiträge: 381
ActionScript:
  1. xmlAufbauEins = new XML();
  2. xmlAufbauEins.ignoreWhite = true;
  3. xmlAufbauEins.load("http://www.roadrunnerrecords.com/blabbermouth.net/newsfeed.xml");
  4. xmlAufbauEins.onLoad = function(AufbauEins) {
  5.     anzahlSchlagzeilenEins = (xmlAufbauEins.firstChild.firstChild.childNodes.length)-4;
  6.     for (i=0; i<anzahlSchlagzeilenEins; i++) {
  7.         newMCEins = MC.duplicateMovieClip("MC"+i, i);
  8.         newMCEins._y = MC._y+MC._height*i;
  9.         MC.steuerZahl = 4;
  10.         newMCEins.steuerZahl = i+4;
  11.         // schlagzeile auslesen
  12.         newMCEins.schlagzeile = xmlAufbauEins.firstChild.firstChild.childNodes;
  13.         newMCEins.schlagzeileIndex = newMCEins.schlagzeile[newMCEins.steuerZahl].childNodes;
  14.         newMCEins.schlagzeileHead = newMCEins.schlagzeileIndex[0].firstChild;
  15.         newMCEins.schlagzeileLink = newMCEins.schlagzeileIndex[1].firstChild;
  16.         newMCEins.schlagzeileDescription = newMCEins.schlagzeileIndex[2].firstChild;
  17.         // schlagzeile anzeigen
  18.         newMCEins.schlagzeileAusgabe.html = true;
  19.         newMCEins.schlagzeileAusgabe.htmlText = newMCEins.schlagzeileHead;
  20.         newMCEins.schlagzeileAusgabe.textColor = 0xFFFFFF;
  21.         newMCEins.schlagzeileAusgabeSchatten.html = true;
  22.         newMCEins.schlagzeileAusgabeSchatten.htmlText = newMCEins.schlagzeileHead;
  23.         newMCEins.schlagzeileAusgabeSchatten.textColor = 0x000000;
  24.         // beschreibung anzeigen
  25.         newMCEins.descriptionAusgabe.text = newMCEins.schlagzeileDescription;
  26.         //suchen und ersetzen (link)
  27.     }
  28.     extract_links(xmlAufbauEins);//** Funktionsaufruf
  29. };
  30. function extract_links() {
  31.     this.xmlAufbauEins = xmlAufbauEins;
  32.     xml_lenght = (this.xmlAufbauEins.firstChild.firstChild.childNodes.length)-4;
  33.     for (j=0; j<xml_lenght; j++) {
  34.         steuerZahl = j+4;
  35.         a = (this.xmlAufbauEins.childNodes[0].childNodes[0].childNodes[steuerZahl].childNodes[1].firstChild);
  36.         b = "&amp;";
  37.         SearchDestroy(a, b, "&");
  38.     }
  39. }
  40. //suche in a nach b und ersetze durch c
  41. function SearchDestroy(a, b, c) {
  42.     d = String(a).indexOf(b);
  43.     e = String(a).slice(0, d);
  44.     f = String(a).slice(d+b.length, String(a).length);
  45.     link = e+c+f;
  46.     trace(link);
  47.     //** Ich würde die Link einfach in ein Array pushen und nicht an einen MC
  48. }

wenn du das hier versuchst, hast du wenigstens die links extrahiert siehe trace(link);
derschatten-nrw ist offline   Mit Zitat antworten
Alt 24-05-2005, 10:01   #10 (permalink)
Flashtestdummy
 
Benutzerbild von Alex_R
 
Registriert seit: Mar 2003
Beiträge: 153
Cool danke, das hilft mir erstmal weiter. Merci
Alex_R ist offline   Mit Zitat antworten
Alt 24-05-2005, 10:20   #11 (permalink)
Neuer User
 
Benutzerbild von derschatten-nrw
 
Registriert seit: May 2003
Ort: Düsseldorf
Beiträge: 381
Kein Problem und noch ein kleiner Tip, wenn du Code Fragmente nicht selbst gecodet hast, würde ich als erstes immer erst die Variablen tracen lassen, so kannst du sehen ob der Source Code auch funktioniert.
derschatten-nrw ist offline   Mit Zitat antworten
Alt 24-05-2005, 11:36   #12 (permalink)
Flashtestdummy
 
Benutzerbild von Alex_R
 
Registriert seit: Mar 2003
Beiträge: 153
Doch noch ne bessere Lösung gefunden...

...
ActionScript:
  1. /////////////////////////////////////////////////////////////////////////////////////////////////////
  2. // Suchen und Ersetzen (Im Link)
  3. function str_replace(haystack, needle, repl_string)
  4. {
  5.     c = repl_string;
  6.     d = String(haystack).indexOf(needle);
  7.     e = String(haystack).slice(0, d);
  8.     f = String(haystack).slice(d+needle.length, String(haystack).length);
  9.     var replString = e+c+f;
  10.     return replString;
  11. }
  12. /////////////////////////////////////////////////////////////////////////////////////////////////////
  13. //XML einlesen (Blabbermouth.net)
  14. xmlAufbauEins = new XML();
  15. xmlAufbauEins.ignoreWhite = true;
  16. xmlAufbauEins.load("http://www.roadrunnerrecords.com/blabbermouth.net/newsfeed.xml");
  17. xmlAufbauEins.onLoad = function(AufbauEins)
  18. {
  19.     anzahlSchlagzeilenEins = (xmlAufbauEins.firstChild.firstChild.childNodes.length)-4;
  20.     for (i=0; i<anzahlSchlagzeilenEins; i++)
  21.     {
  22.         newMCEins = MC.duplicateMovieClip("MC"+i, i);
  23.         newMCEins._y = MC._y+MC._height*i;
  24.         MC.steuerZahl = 4;
  25.         newMCEins.steuerZahl = i+4;
  26.         // schlagzeile auslesen
  27.         newMCEins.schlagzeile = xmlAufbauEins.firstChild.firstChild.childNodes;
  28.         newMCEins.schlagzeileIndex = newMCEins.schlagzeile[newMCEins.steuerZahl].childNodes;
  29.         newMCEins.schlagzeileHead = newMCEins.schlagzeileIndex[0].firstChild;
  30.         newMCEins.schlagzeileLink = str_replace(newMCEins.schlagzeileIndex[1].firstChild, "&amp;", "&");
  31.         newMCEins.schlagzeileDescription = newMCEins.schlagzeileIndex[2].firstChild;
  32.         // schlagzeile anzeigen
  33.         newMCEins.schlagzeileAusgabe.html = true;
  34.         newMCEins.schlagzeileAusgabe.htmlText = newMCEins.schlagzeileHead;
  35.         newMCEins.schlagzeileAusgabe.textColor = 0xFFFFFF;
  36.         newMCEins.schlagzeileAusgabeSchatten.html = true;
  37.         newMCEins.schlagzeileAusgabeSchatten.htmlText = newMCEins.schlagzeileHead;
  38.         newMCEins.schlagzeileAusgabeSchatten.textColor = 0x000000;
  39.         // beschreibung anzeigen
  40.         newMCEins.descriptionAusgabe.text = newMCEins.schlagzeileDescription;
  41.         trace(newMCEins.schlagzeileLink);
  42.     }
  43. };
Dadurch das ich jetzt eine function str_replace definiert habe, muss ich nicht das XML zweimal einlesen und ich bekomme an der richtigen Stelle eine umdefinierte URL zurück. =)
Alex_R ist offline   Mit Zitat antworten
Alt 24-05-2005, 12:50   #13 (permalink)
Neuer User
 
Benutzerbild von derschatten-nrw
 
Registriert seit: May 2003
Ort: Düsseldorf
Beiträge: 381
Cool das du noch ne besser Lösung gefunden hast, in meiner kleinen Version musst du die XML Datei auch nur einmal laden...denn der Funktionsauruf extract_xml hat ja als ÜbergabeParameter dein XML Object. Aber Hauptsache du hast jetzt deine eigene Lösung ! :-)
derschatten-nrw 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 14:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele