Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-12-2004, 08:33   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Problem mit Wertrückgabe aus Methode

Ich habe die Klasse XML mit eigenen Methoden erweitert. Es soll z.B. die Farbe aus einer XML Datei ausgelesen werden. (<color>ffffff</color>)
Wenn ich in der Funktion trace verwende wird im Ausgabefenster die Farbe einwandfrei angzeigt. Schreibe ich jedoch return und den gleichen Pfad wie bei der trace Ausgabe dann kommt nur [type Function]. Was läuft hier schief?

Hier noch mein Script mit trace:

PHP-Code:
// Klasse XML erweitern

// Methode laden

XML.prototype.laden = function (pDatei) {
    
//this = new XML();
    
    
this.load(pDatei);
    
this.ignoreWhite true;
};

// Methode ausgeben

XML.prototype.ausgeben = function () {
     
this.onLoad = function (status) {
        if (
status) {
            
trace(this.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.childNodes[0].toString());
        } else {
            
            
trace("Fehler");
        }
    }; 
    
        
};

meinXML = new XML();
meinXML.laden("datafile.xml");
meinXML.ausgeben(); 
Bei der ausgabe über return sieht es dann so aus:

PHP-Code:
// Klasse XML erweitern

// Methode laden

XML.prototype.laden = function (pDatei) {
    
//this = new XML();
    
    
this.load(pDatei);
    
this.ignoreWhite true;
};

// Methode ausgeben

XML.prototype.ausgeben = function () {
     
this.onLoad = function (status) {
        if (
status) {
            return 
this.firstChild.firstChild.firstChild.firstChild.firstChild.firstChild.childNodes[0].toString();
        } else {
            
            
trace("Fehler");
        }
    }; 
    
        
};

meinXML = new XML();
meinXML.laden("datafile.xml");
farbe meinXML.ausgeben;
trace(farbe); 
Ich hoffe jemand von Euch kann mir helfen.
Chris M. ist offline   Mit Zitat antworten
Alt 28-12-2004, 11:44   #2 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
die antwort hierzu liegt in der frage bereits drin.

flash kennt ein Object namens COLOR, das widerum eine funktion darstellen kann bzw eine methode für den hexadez-farbwert kennt.

hier müsstest du das ein wenig verpacken, sonst erkennt flash sofort die 'function'.

äähhmm stoüp...EDIT!...
wieso toString() ???? <---- für was soll das gut sein?


greetz

kelor

Geändert von kelor (28-12-2004 um 11:46 Uhr)
kelor ist offline   Mit Zitat antworten
Alt 28-12-2004, 11:50   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Ganz verstehe ich nicht was du meinst. color ist nur der Knotenname in der XML Datei. Und der Returnwert wird von der variablen Farbe aufgefangen. Der einzige Fehler ist meiner Meinung das ich die Methode so aufrufen müsste:

farbe = meinXML.ausgeben();

und nich wie oben geschrieben

farbe = meinXML.ausgeben;

Mit meinXML.ausgeben(); kommt allerdings als Rückgabewert undefined!

Irgendwas läuft hier einfach schief.
Chris M. ist offline   Mit Zitat antworten
Alt 28-12-2004, 12:11   #4 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
es ist wahrscheinlich undefined, weil die anfrage kommt, bevor überhaupt daten geladen wurden.

anderer grund könnte sein, dass deine xml-struktur nicht korrekt abgefragt wird.
mit dem aufruf hast du aber recht.

bastel dir doch einen listener, der die farbe ausgibt, nachdem onLoad gefeuert
wurde...

ActionScript:
  1. // bsp
  2. l:Object = { function _customOnDataLoad( tar:XML ){ trace( tar.ausgeben() ); } };
  3.  
  4. _xml:XML = new XML();
  5. _xml._listener = l;
  6.  
  7. // und in der onLoad function greifst du dann auf die referenz zu l zu
  8. _xml.onLoad = function()
  9. {
  10.       this._listener._customOnDataLoad( this );
  11. }

so, oder ähnlich (mx.EventDispatcher) könntest du es aufbauen.

gruss
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn

Geändert von the binary (28-12-2004 um 12:11 Uhr) Grund: Code-Fix
the binary ist offline   Mit Zitat antworten
Alt 28-12-2004, 12:31   #5 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
und was sucht das toString() in der methode?...immer noch nicht kp was das da verloren hat...oder isses nur noch zu früh für mein altersschwaches hirn?*koppkratz*

die klammer hatt ich gar net gesehen gehabt...*lol*
stüümmt...die sollte schon da stehen, damit die methode auch gerufen wird...aber dennoch...was macht das toString da?


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 28-12-2004, 12:31   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Zell am See
Beiträge: 62
Dein Script verstehe ich nur Ansatzweise. Ist AS2 oder?

Ich denke das Problem könnte wirklich am laden liegen. Aber eigentlich sollte das mit der onLoad Funktion ja abgefangen werden. Ist der status aus true dann erfolgt die ausgabe wenn nicht dann kommt die Fehlermeldung.
Chris M. ist offline   Mit Zitat antworten
Alt 28-12-2004, 12:35   #7 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
farbe = meinXML.ausgeben;

das geht so nicht - das ganze ist asynchron und braucht eine weile bis es geladen ist...
du müsstest dir dafür einen Listener bastelen...

XML Ladestatus überwachen

Gruss nky

edit: verdammt binary hör auf gleichzeitig mit mir zu ändern *g
nky 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:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele