Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-09-2008, 10:05   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Hasendorf bei Bremen
Beiträge: 81
Exclamation geladene Variable als globale Variable

Hallo Leute wer kann helfen?
(ich checks nich)

Mein Problem:
Ich lade mir mit dem Script aus dem Tut von agedoubleju Variable aus einer txt-Datei. Die bekomme ich auch geladen - ABER ich brauche die als globale Variable. Und das bekomme ich nicht hin!

Mein Script:
function geladen(erfolgreich) {
if(erfolgreich) {
//diese Variable bzw ihren Wert brauche ich global: RUfarbe
trace("empfangene Variable: "+this.RUfarbe);
//hier forme ich die Variable in eine globale Variable um:_root.RUlook
_root.RUlook = this.RUfarbe;
trace("umgeformte Variable: "+_root.RUlook);
//Diese beiden werden mir per trace im Ausgabefenster angezeigt
}
else {
trace("Fehler beim Laden");
}
}
this.RUv = new LoadVars();//Instanz erstellen
this.RUv.onLoad = geladen;//Callback setzen
this.RUv.load("StaatenFarben.txt",this.RUv,"POST") ;//und den Request starten

//ABER hier wird mir diese globale Variable NICHT angezeigt!!!
//und somit auch nirgends verwendet
trace("umgeformte root Variable: "+_root.RUlook);

Wie bekomme ich globale Variablen? auf die ich von überall zugreifen kann?

Hoffentlich könnt Ihr mir helfen
ich dreh hier gleich durch!
pixer ist offline   Mit Zitat antworten
Alt 16-09-2008, 10:13   #2 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Am Rande: Damit man sich die Scripts vernünftig angucken kann, gibt es hier Script-Tags im Board. So viel Mühe kann man sich schon machen, wenn man hilfe will.

Dein Problem: Das onLoad-Event ist nicht synchron. Es wird erst gefeuert, wenn der gewünschte externe Inhalt auch geladen ist. Das restliche Script läuft in der Zeit weiter. Dein trace liegt also zeitlich vor dem onLoad. Und dort existiert dein Variable noch nicht.
Und das ist auch keine globale Variable. Globale Variablen sind sowieso in 99% der Fälle unsinnig.
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 16-09-2008, 10:41   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Hasendorf bei Bremen
Beiträge: 81
soll heißen?

Super, jetzt hast Du mich als Volldeppen geoutet.

Aber hast Du auch ne Lösung?
pixer ist offline   Mit Zitat antworten
Alt 16-09-2008, 11:01   #4 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Ich weiß nicht, wie du zu der Ansicht mit dem Volldeppen kommst, aber ich oute hier niemanden. Schließlich stell ich mich bei Dingen, die ich nicht weiß, auch nicht immer schlau an und bin froh, wenn jemand hilft.
Nach 65 Beiträgen deinerseits wollte ich dich aber mal darauf hinweisen, dass es hier Möglichkeiten gibt, Scripts lesbarer darzustellen.

Und dann hab ich erklärt, was passiert, und in meinen Augen ist daraus ersichtlich, was "die Lösung" ist. Die Variable ist halt erst nach dem onLoad verfügbar.
Alle Ereignisse, die diese Variable benötigen, dürfen also erst mit oder nach dem onLoad erfolgen.

z.B.
PHP-Code:
var RUlook:String;

function 
geladen(erfolgreich):Void {
    if (
erfolgreich) {
        
//diese Variable bzw ihren Wert brauche ich global: RUfarbe
        
trace("empfangene Variable: "+this.RUfarbe);
        
//hier forme ich die Variable in eine globale Variable um:_root.RUlook
        
RUlook this.RUfarbe;
        
traceMirWas_AberErst_NachDemOnLoad();
    } else {
        
trace("Fehler beim Laden");
    }
}

this.RUv = new LoadVars();//Instanz erstellen
this.RUv.onLoad geladen;//Callback setzen
this.RUv.load("StaatenFarben.txt",this.RUv,"POST");//und den Request starten

function traceMirWas_AberErst_NachDemOnLoad():Void {
    
trace("umgeformte root Variable: "+RUlook);

__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 16-09-2008, 11:18   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Hasendorf bei Bremen
Beiträge: 81
Keine Angst, ich hatte Deine Antwort nicht als Angriff o.ä. empfunden - habe nur ein loses Mundwerk

Und mir schon gedacht, dass Du davon ausgehst, ich wisse dann schon was zu tun ist. Nur leider bin ich so weit hinten, dass ich es sogar jetzt, wo Du mir dankenswerter Weise die Lösung ausformoliert präsentierst, ich es nicht raffe.

Werde mal über Deine Lösung meditieren denn sie hat Teile in sich, die ich noch nie genutzt habe. (Wie Void z.B.)

Und entschuldige bitte, falls Du Dich angegriffen gefühlt hast. Ich wollte Dir nix unterstellen!
pixer ist offline   Mit Zitat antworten
Alt 16-09-2008, 11:27   #6 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Void heißt nur so viel wie "nichts" und zeigt an, dass die function nichts zurückgibt.
Es ist in Flash grundsätzlich nicht nötig, Rückgabetypen zu deklarieren, aber empfehlenswert, um Lesbarkeit und Fehlermeldungen zu verbessern.
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 ist offline   Mit Zitat antworten
Alt 16-09-2008, 11:57   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2003
Ort: Hasendorf bei Bremen
Beiträge: 81
Danke für die Erklärung!

Leider bekomme ich immer ne Fehlermeldung, in Deinem Script stimme was mit den geschwungenen Klammern nicht - kann den Fehler allerdings nicht finden.

Mal was anderes: Grundsetzlich brauche ich über 100 Variablen, die die Erscheinung der Staaten auf einer interaktiven Weltkarte bestimmen sollen. (Der Kunde will jetzt selber Einfluss nehmen können.)

Die Weltkarte ist ein Wenig verschachtelt aufgebaut, weshalb ich globale Variablen wollte, auf die ich von jedem MC (Staat) aus zugreifen kann.

Also dachte ich mir, beim Laden werden alle Variablen geladen und die Staaten können sich dann entsprechend verhalten.

Hättest Du dafür eine andere Lösung?
Oder ist mein Ansatz eigentlich richtig? (nur noch fehlerhaft)
Oder oder???

Ich bekomme hier gerade das große Zweifeln
pixer ist offline   Mit Zitat antworten
Alt 16-09-2008, 15:40   #8 (permalink)
ChronoGuard
 
Benutzerbild von SpecOps-12
 
Registriert seit: Mar 2002
Ort: Saarbrücken
Beiträge: 2.649
Achso. Du wolltest ja AS1.
Mein Script ist teilweise AS2-Syntax.

Ist AS1 ne Pflichtanforderung? Heutzutage macht das doch nicht mehr viel Sinn, oder täusch ich mich da...?

Liegen die einzelnen Staaten denn in unterschiedlichen Verhältnissen zu der root? Wenn nicht, kannst du auch relative Pfade nutzen.
Oder wenigstens halt _root benutzen und nicht _global. Das ist genauso einfach von überall verfügbar und kann im Notfall mit _lockroot abgeschlossen werden.

_global ist fast immer schlecht.
__________________
we will stop enhancing the truth in 3, 2, ...
SpecOps-12 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:16 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele