Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-11-2004, 22:12   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Kulmbach, Bayern
Beiträge: 59
Question loadVar, String OBJ und String splitten /n ... gleich drei Wünsche auf einmal!

Hallo Leute!

Wahrscheinlich ganz einfach, aber ich komme einfach nicht zum Ziel. es geht eigentlich um drei Punkte, die zu einem Ziel führen:

1. ich lade eine externe Textdatei ins Flash mit

loadVariablesNum ("herachie.txt", 0);

2. diesen String möchten ich in ein String Objekt übergeben.

s2 = new String(this.test);

3. das String Objekt möchte ich dann mit .split an den Zeilenumbrüchen in einzelne Arrays oder Strings aufteilen

splitArray = [];
var tmpArray = [];
tmpArray =s2.split("/n");
for (var i = 0; i< tmpArray.length; i++) {
splitArray[i] = [];
splitArray[i] = tmpArray[i].split("/n");
}


Ist das überhaupt der richtige Weg?

Im Endeffekt soll aus: test.txt mit Inhalt:

&test=
name1
name2
name3

folgendes werden:

Array[]=name1, name2, ...

bzw.
String1 = name1
String2= name2
...[/B]


Hoffentlich kann jemand helfen... so langsam hab ich nämlich das gefühl, das ich mich verrenne.

Grüße, Marcel
dragon ist offline   Mit Zitat antworten
Alt 17-11-2004, 23:27   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Ist das überhaupt der richtige Weg?
Nö... Wenn du dir mal die Mühe gemacht hättest, unter "Suchen" nach "loadVariablesNum" zu schauen und einige Threads zu lesen, wüsstet du auch, warum...

loadVariables und (schlimmer noch) loadVariablesNum sind alte Überbleibsel aus F4/F5-Zeiten. Sie haben den Nachteil, dass sie asynchron sind, d.h. der Steuerkopf, bzw. das Script warten nicht, bis der Befehl abgesetzt wurde und eine Rückmeldung erfolgt ist, sondern gehen sofort zum nächsten Befehl. Wenn sich der jetzt auf die Variablen bezieht, die loadVariables bringen soll, läuft das Script ins Leere... Deswegen benötigst du zumindest eine Frameschleife, die die Rückgabewerte abfängt.

Weiterhin bekommst du überhaupt keine Rückmeldung, ob das Laden funktioniert hat. Wenn z.B. das Script nicht existiert oder gefunden werden konnte, läuft sich dein Script 'nen Wolf.

Außerdem kannst du einem Middleware-Script wie PHP nicht gezielt Variablen übersenden, weil loadVariables einfach alle Variablen der aktuellen Zeitleiste überträgt.

Abhilfe schafft die LoadVars-Klasse: damit bekommst du Rückmeldungen, ob das Laden funktioniert hat, du hast explizit einen onLoad-Callback, der nach dem Laden im Script fortfahren kann und du hast die Möglichkeit, gezielt Variablen an die LoadVars-Instanz zu übergeben.

Hier mal ein Beispiel:
Im Textfile mein.txt steht folgendes:
Code:
&test=name1,name2,name3&
ActionScript:
  1. function geladen(erfolgreich) {
  2.         if(erfolgreich) {
  3.                 trace("this.test="+this.test);//testhalber im Testmodus ausgeben lassen
  4.                  _global.meineVar = this.test.split(",");//ergibt _global.meineVar[0]="name1",_global.meineVar[1]="name2",_global.meineVar[2]="name3"
  5.                
  6.         }
  7.         else {
  8.                 trace("Fehler beim Laden");
  9.         }
  10. }
  11. LadeObj = new LoadVars();
  12. LadeObj.onLoad = geladen;//diese Callbackfunktion nach Rückgabe von Werten in das LoadVars-Objekt ausführen
  13.  
  14. LadeObj.sendAndLoad("mein.txt",LadeObj,"POST");
  Mit Zitat antworten
Alt 18-11-2004, 20:48   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Kulmbach, Bayern
Beiträge: 59
Hallo agedoubleju!

Erstmal vielen Dank für Deinen Tread und kurz vor ab... ich versuche immer erst die Forumsbeiträge zu durchforschen, Bücher zu wälzen, bevor ich hier poste... wenn ich nicht mehr weiter weiß und die Zeitinvestition in keinem Verhältnis steht, dann...

Nun zu meinem Problem... ich habe die alten Scripte benutzt, weil ich mit dem neuen Zeug kein Ergebnis bekommen habe und ich versucht habe immer weiter zu reduzieren. Über Error Handling habe ich mir noch keine Gedanken gemacht, weil ich erstmal mit trace meine Ausgaben für mich geprüft habe.

Also ich habe Deinen Code bei mir getestet, komme aber zu keinem Ergebnis, bzw. es funzt irgendwie nicht... die Frage war auch noch ob es auch mit Zeilenumrüchen auch geht? Muss ich dann mit /n splitten?

Es wird kein Fehler Ausgegeben, aber auch kein Ergebnis, nur der String vom tracebefehl???

Es wäre wirklich sehr nett, wenn ich nochmals Hilfe bekomme! Ich stecke echt fest!

Danke,

Marcel
dragon ist offline   Mit Zitat antworten
Alt 18-11-2004, 22:56   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Es wird kein Fehler Ausgegeben, aber auch kein Ergebnis, nur der String vom tracebefehl???
Was wird denn ausgegeben?

Zeilenumbrüche kannst du mit "\n" schalten, aber evtl. wird dann ein zweiter Backslash mit übertragen, den du im String mit einer split-join-Kombination löschen musst. In HTML-Text geht es natürlich auch mit einem br-Tag.
  Mit Zitat antworten
Alt 19-11-2004, 07:45   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Kulmbach, Bayern
Beiträge: 59
Sorry, war etwas missverständlich... er gibt nix aus! Nur den String "this.test="

Mit /n hab ich schon probiert, denke es liegt aber wo anders, das Problemchen.

Hilfe! Das kann doch alles nicht so schwer sein....

Marcel
dragon ist offline   Mit Zitat antworten
Alt 19-11-2004, 11:46   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
er gibt nix aus!
Poste mal deine fla und das dazugehörende Textfile.
  Mit Zitat antworten
Alt 20-11-2004, 15:03   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Kulmbach, Bayern
Beiträge: 59
Hallo Holger!

Ich gebe so schnell nicht auf!! Das Problem besteht wohl eher in meinem Verständnis... Dein Script scheint zu funktionieren. Ich kann nur die einzelnen Textstrings nicht weiter verarbeiten, bzw. weiß irgendwie nicht wie, trotz Deiner Kommnetare. Ich hatte gedacht, das ich einfach nur _global.meineVar[i] auslesen muss und diese dann weiter verarbeiten kann? Aber anscheinend bin ich wohl ein wenig zu dusselig dafür.

Also die Testausgabe wie gesagt wirft nix aus, aber wenn ich die Variablen aufliste, findet man das Textfile??????

Code:
Globale Variablen
  Variable _global.meineVar = [Objekt #1, Klasse 'Array'] [
    0:"\nAutohaus\n?rztehaus\nKosmetikstudio\nKrankenhaus\nordner6\nordner7\nordner8\nordner9\nordner10\nWerbung\n"
  ]
Stufe #0:
Variable _level0.$version = "MAC 6,0,21,0"
Variable _level0.geladen = [Funktion 'onLoad']
Variable _level0.LadeObj = [Objekt #3, Klasse 'LoadVars'] {
    onLoad:[Funktion 'onLoad'],
    herachie:"\nAutohaus\n?rztehaus\nKosmetikstudio\nKrankenhaus\nordner6\nordner7\nordner8\nordner9\nordner10\nWerbung\n"
  }
Ich hab jetzt alles mal isoliert, in einen einzelnen Fla gepackt und hier das Fla und das Textdokument angehängt... vielleicht kannst Du ja wirklich noch einen Blick darauf werfen.

Vielen lieben Dank!

Marcel
Angehängte Dateien
Dateityp: zip fla.zip (4,2 KB, 4x aufgerufen)
dragon ist offline   Mit Zitat antworten
Alt 20-11-2004, 17:41   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das funktioniert doch... Allerdings nicht so, wie du es dir vorgestellt hast, du musst schon - wie ich weiter oben angegeben habe - die Variablen im Textfile mit Kommas trennen. Sonst macht ein String.split auf Kommas auch irgendwie nicht viel Sinn. Das Array kannst du dann bspw. so weiterverwenden:
ActionScript:
  1. _global.meineVar = this.herachie.split("/n");
  2. trace("_global.meineVar[0]="+_global.meineVar[0]);
  Mit Zitat antworten
Alt 20-11-2004, 21:31   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2002
Ort: Kulmbach, Bayern
Beiträge: 59
Hey sorry und vielen Dank! Irgendwie hab ich auf der Leitung gestanden... es funzt. Ich habe nur nen /n geschrieben statt \n ... Der Fehler liegt im Detail

Hab aber noch eine ergänzende Frage: Wie überprüfen ich, bzw. gebe die Anzahl der gefüllten Variablen wieder zurück... mit .length kriege ich es nicht hin, worauf ich eine While Schleife gebaut habe und darin eine Abfrage auf ungefüllt mache. Geht aber auch nicht, weil die Abfrage nicht funzt: _global.meineVar[z]==null ?? _global.meineVar[z]=null ?? _global.meineVar[z]="" ??

Vielleicht hast Du darauf auch noch eine Antwort.

Vielen lieben Dank, dann solte ich es endlich haben!

Marcel
dragon ist offline   Mit Zitat antworten
Alt 21-11-2004, 01:18   #10 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
ActionScript:
  1. laenge =  _global.meineVar.length;//ohne Klammern, da keine Funktion sondern Eigenschaft
  2.  
  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 21:38 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele