• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash und Server > Flash mit XML und Webservices

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-01-2010, 17:19   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 7
XML Verarbeitung mal geht es ... mal nicht

Hallo Experten,
ich sitze mal wieder an einem Flash-Problem, für das ich absolut keine Lösung finde. Ich hoffe, jemand kann mir weiterhelfen.

Es geht um Folgendes:
Ich will eine Tooltip-Funktion umsetzen - ähnlich wie in jeder Windows-Software.
Die Tooltip-Texte sollen aus einer XML-Datei geladen werden.
Mein Problem ist, dass ich die Texte mit Hilfe einer for-Schleife einmal geladen bekomme und mal eben nicht.

Kurzes vorab-Bsp:
PHP-Code:
for (i=1i<3i++) {
trace(xml_path.childNodes[i-1].firstChild.nodeValue);
    } 
Im Folgenden mal meine Actionscripte und die XML-Datei. Im ersten Schlüsselbild lade ich die XML-Datei und im zweiten erstelle ich die Tooltips.

1. Schlüsselbild
PHP-Code:
stop();
var 
theXML:XML = new XML();
theXML.ignoreWhite true;
theXML.onLoad = function(success:Boolean
{
 if (
success && this.loaded && this.getBytesLoaded() == this.getBytesTotal()) //Fehlerabfrage bzgl. der XML-Datei
 
{    
    
_global.xml_path _root.theXML.firstChild;
    
trace("Das wird richtig ausgegeben 1: "+xml_path);
    
    for (
i=1i<3i++) {
        
trace("Das wird richtig ausgegeben 2: "+xml_path.childNodes[i-1].firstChild.nodeValue);
    }    
    
weiter_gehts();
 }
 else
 {
     
trace("Die XML-Datei wurde nicht gefunden!");
     
//_root.gotoAndStop("XML_Error");
 
}
};

function 
weiter_gehts() {
    
gotoAndStop(2);
}

theXML.load("deutsch.xml"); 
2. Schlüsselbild
PHP-Code:
trace("Das wird richtig ausgegeben 3: "+xml_path.childNodes[0].firstChild.nodeValue);

// Funktion Tooltip_anzeigen für alle Buttons bei RollOver ausführen
for (i=1i<3i++) {
    
this["button_"+i].onRollOver = function() {
        
Tooltip_anzeigen(this"Das hier funktioniert nicht: "+xml_path.childNodes[i-1].firstChild.nodeValue); /*An dieser Stelle funktioniert die gleiche for-Schleife nicht, 
die im ersten Schlüsselbild eine Ausgabe gebracht hat!*/
    
}
}

// Alle Tooltips bei RollOut unsichtbar
for (i=1i<3i++) {
    
this["button_"+i].onRollOut = function() {
        
this[tooltip]._visible false;
    }
}

function 
Tooltip_anzeigen(mcxml_text) {    
    
    if (
mc[tooltip] != undefined) { // wenn textfeld noch nicht erstellt wurde ...
        
mc[tooltip]._visible true;
        return; 
// beendet die Funktion vorzeitig
     
}

    
mc.createTextField(tooltip,1,mc._width,0,50,40);
    
    
mc[tooltip].border true;
    
mc[tooltip].background true;
    
mc[tooltip].html true;
    
mc[tooltip].backgroundColor 0xFFFFCC;
    
mc[tooltip].selectable false;
    
mc[tooltip].autoSize true
    mc
[tooltip].multiline true;
    
mc[tooltip].wordWrap false;
    
mc[tooltip].htmlText xml_text//Hier ist die Textvariable ******

    
fontEigenschaften = new TextFormat()
    
fontEigenschaften.bold false;
    
fontEigenschaften.size 16;
    
fontEigenschaften.font "Verdana";
    
fontEigenschaften.align "left";
    
mc[tooltip].setTextFormat(fontEigenschaften);

XML-Datei
HTML-Code:
<?xml version="1.0" encoding="utf-8"?>
<root>
 <button>Die erste Schaltfläche dient dazu, ....</button>
 <button>Die zweite Schaltfläche dient dazu, ....</button>
</root>
Ich bekomme alle Texte der XML-Datei ausgegeben, bis auf die Texte, die ich mit Hilfe der for-Schleife im zweiten Schlüsselbild der Funktion Tooltip_anzeigen übergebe. Übergebe ich statt dem:

xml_path.childNodes[i-1].firstChild.nodeValue

das hier:

xml_path.childNodes[0].firstChild.nodeValue

funktioniert es wunderbar. (Im Bild, unten, sieht man die fehlerhafte Ausgabe.)
Hat jemand eine Idee, woran es liegen könnte bzw. wo mein Fehler liegt?
Ich bin echt dankbar für jeden Hinweis!!!

Vielen Dank schonmal!
JPSone
Angehängte Grafiken
Dateityp: png Problem.png (23,6 KB, 8x aufgerufen)
JPSone ist offline   Mit Zitat antworten
Alt 20-01-2010, 22:24   #2 (permalink)
Neuer User
 
Registriert seit: Feb 2009
Beiträge: 7
Wink Die Lösung!

Manchmal muss man einfach nur das Forum genau durchsuchen :-).
Und schon (nach mehr als einem Tag Fehlersuche im eigenen Code ) bin ich fündig geworden.

i-Variable aus der for-Schleife übergeben... (Danke an dieser Stelle nochmal für diesen hilfreichen Post!!!)

Um das ganze aufzuklären - es lag an folgenden Codezeilen:

PHP-Code:
for (i=1i<3i++) {
    
this["button_"+i].onRollOver = function() {
        
Tooltip_anzeigen(this"Das hier funktioniert nicht: "+xml_path.childNodes[i-1].firstChild.nodeValue);
    }

In der for-Schleife habe ich einen Zähler (i) definiert, der von eins bis zwei zählt. Der Ausdruck this["button_"+i].onRollOver ... verwendet auch den Zähler und wird somit richtig angesprochen (Beweis: beide Buttons reagieren
bei onRollOver mit der Maus).
Innerhalb der im Folgenden deklarierten Funktion allerdings, wird der Zähler (i) nicht korrekt übernommen (Beweis: Der Tooltip zeigte "undefined"). Ich habe mit einem trace das (i) innerhalb der Funktion abgegriffen und erhielt immer den Wert 3, der ja laut for-Schleife eigentlich garnicht erreicht werden kann. D. h. was ich da zurück bekam für (i), war nicht der eigentliche Zähler!
Der oben verlinkte Post machte mir allerdings klar, dass der Zähler (i) an die Instanz gebunden werden muss, wenn man ihn nachträglich mit Hilfe einer Funktion aufrufen will. Man verwendet hier also keine globale Variable, sondern definiert die Variable innerhalb einer Instanz. Und damit klappt es wunderbar!!! Hier meine funktionierenden Zeilen:

PHP-Code:
for (i=1i<3i++) {
    
this["button_"+i].i;
    
this["button_"+i].onRollOver = function() {
        
Tooltip_anzeigen(this"Das hier funktioniert: "+xml_path.childNodes[this.i-1].firstChild.nodeValue); //hier muss jetzt this.i verwendet werden, um an den Zähler innerhalb der Instanz zu kommen!!!
    
}

JPSone ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
for-schleife, xml, xml laden, zähler

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Xml und img tag verarbeitung Rworksdesigner ActionScript 3 4 24-02-2009 22:06
XML Verarbeitung Quasimorrow ActionScript 2 3 19-06-2007 08:49
php verarbeitung bubzilla Flash MX 2 21-07-2004 00:43
textfeldeingabe und variablen-verarbeitung klappt nicht shck Flash 4 und Flash 5 8 16-11-2001 10:02
textfeldeingabe und variablen-verarbeitung klappt nicht shck ActionScript 1 2 15-11-2001 20:46


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele