• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash MX 2004

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-12-2004, 18:02   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
Question Problem bei Variablen aus mehreren txt Dateien

Hallo

ich habe ein problem damit variablen aus text dateien auszulesen und dann gemeinsam in einem dynamischen Textfeld anzeigen zu lassen.

Und zwar möchte ich folgendes erreichen:
ich habe mehrere textdateien(termin1.txt,termin2.txt,...) und eine textdatei, die angibt wie viele terminx.txt dateien es gibt. Jede der Termin.txt's beinhaltet 3 variablen:datum,termintext,terminende.
Jetzt möchte ich dass automatisch eine txt datei nach der anderen ausgelesen wird und die inhalte der variablen in ein textfeld geschriben werden, so dass nachher alle zusammen in dem t5extfeld stehen.

Das problem was ich habe ist dass es nicht automatisch funktioniert, jedoch wenn ich einen button einbaue, kann ich durch einen klick auf den button eine txt nach der anderen auswerten und in das textfeld einfügen lassen.

nun mal etwas von meinem code:
zunächst lade ich die Anzahlvariable :
Code:
loadVariables("termin/terminmenge.txt?" add random(99999),this);
dann lade ich die variablen aus der ersten Textdatei
Code:
loadVariables("termin/termin"+terminanzahl+".txt?" add random(99999), "");
dann werden die Variablen zur variablen des gesamten textes dazugetan
Code:
termintextkomplett += datum+"<br>"+termintext+"<br><br>;
der code ist verteilt über mehrere Bilder und nach dem einlesen der Variablen kommen jeweils zwei bilder die eine schleife bilden bis die "terminende" variable fertig geladen ist, damit er nich zu früh weiter springt.

Danach ziehe ich der Var Terminanzahl einen ab und lasse den abspielkopf wieder zurück springen.

Soweit so gut, wenn ich mir dass ganze jetzt anschaue, wird der erste Termin gelesen und angezeigt, aber nicht die anderen, obwohl er ja eigenltich immer wieder von vorne anfangen sollte nachdem ich die terminanzahl verringert habe.

wenn ich aber jetzt einen button mit folgendem script einbaue
Code:
on (release) {
	if (_parent.terminanzahl>1) {
		_parent.terminanzahl--;
		loadVariables("termin/termin"+_parent.terminanzahl+".txt?" add random(99999), "_parent");
		_parent.gotoAndPlay(15);
	}
}
dann wird erfolgreich die nächste textdatei ausgelesen und der inhalt dessen Variablen an das vorherige angehängt.

Aber wie schaffe ich es jetzt dass er dass automatisch macht und ich nicht immer auf den button drücken muss?

Ich hatte mir das recht einfach vorgestellt, aber irgendwie schaff ich es einfach nicht...

Hier kann mir hoffentlich jemand weiter helfen

benny
Hoodoo ist offline   Mit Zitat antworten
Alt 02-12-2004, 23:48   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das mit dem Buttonclick funktioniert mit loadVariables auch nur, weil du damit das asynchrone Ladeverhalten des Befehls umgehst. Flash wartet nach Aufruf des Befehls nämlich keineswegs auf irgendwelche Rückmeldungen, sondern macht sofort weiter im Script. Außerdem bekommst du keine Hinweise, ob das Laden überhaupt funktioniert hat.

Du müsstest also bspw. eine Frameschleife schreiben, die solange rotiert, bis z.B. aus dem Textfile ein bestimmter Wert zurückgegeben wird. Allerdings wenn das Textfile aus welchen Gründen auch immer nicht oder nicht vollständig geladen wird, rotiert die Schleife ohne Rückmeldung bis zum SanktNimmerleins-Tag...


Deswegen wurde in F6 die LoadVars-Klasse eingeführt. Mit einer Instanz dieser Klasse kannst du bei erfolgreichem Laden eine Callbackfunktion starten, mit der du dann im Script fortfahren kannst. Dazu ein Beispiel:

Im Textfile steht beispielsweise:
Code:
&meinTxt=hier steht der Text&
ActionScript:
  1. function geladen(erfolgreich) {
  2.         if(erfolgreich) {
  3.            //Textfile wurde erfolgreich eingelesen!     
  4.  
  5. trace("this.meinTxt="+this.meinTxt);//testhalber im Testmodus ausgeben lassen
  6.                 _level0.meineTextfeldInstanz.text=this.meinTxt;//die erhaltene Variable einer TextfeldInstanz übergeben
  7.  
  8. //und dann bspw. mit einer weiteren Instanz der LoadVars-Klasse weitermachen, die dann den nächsten Text einlädt usw.
  9.         }
  10.         else {
  11.                 trace("Fehler beim Laden");
  12.         }
  13. }
  14. LadeObj = new LoadVars();
  15. LadeObj.onLoad = geladen;//diese Callbackfunktion nach Rückgabe von Werten in das LoadVars-Objekt ausführen
  16.  
  17. LadeObj.sendAndLoad("meineDatei.txt",LadeObj,"POST");

Du kannst das ganze entweder kaskadierend aufbauen, d.h. in der jeweiligen Callbackfunktion wird immer die nächste Instanz der LoadVars-Klasse gestartet oder du legst mehrere Instanzen hintereinander an, die allerdings dann im Callback immer Informationen an dein Textfeld weitergeben müssen.
  Mit Zitat antworten
Alt 03-12-2004, 10:54   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
Cool...mit dem LoadVars scheint das echt so zu funktionieren wie cih mir das vorgestellt hab

Bin zwar noch nich fertig, aber ich hab schon so einige Variablen ausgelesen, klappt so weit schon wunderbar...Danke hier schon mal

Ich hab aber doch noch ein kleines problemchen, ist aber nich wild, denn ich benutze jetzt immer noch ne frame schleife, da ich nich weiss wie ich die onLoad function sich immer wieder mit einem veränderten wert aufrufen kann bis ein bestimmter erreicht ist...aber mit der frameschleife gehts dann doch auch,oder?!

ich schreib gleich nachher mal meinen code, dann kann man mich ja verbessern wenns was zu verbessern gibt...



ich muss echt sagen, das mir das forum hier schon verdammt oft weitergeholfen hat...die kompetenz und hilfsbereitschaft ist hier echt klasse!!
Hoodoo ist offline   Mit Zitat antworten
Alt 03-12-2004, 11:36   #4 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
Soweit so gut...hab alles mal fertig gemacht und es funktioniert
es werden alle Variablen erfolgreich gelesen und gemeinsam in einer Variablen ausgegeben, welche von meinem textfeld angezeigt wird.


Aber ein problem hab ich da doch noch. und zwar packe ich das ganze dann in einen movieclip und denn baue ich in einen film ein welcher von einem anderen film aufgerufen wird. Und schon passiert gar nix mehr...

hier mal mein code von dem movieclip
frame1:
PHP-Code:
Anzahl_lv = new LoadVars();
Anzahl_lv.onLoad anzahl_geladen;

Anzahl_lv.sendAndLoad("termin/terminmenge.txt",Anzahl_lv,"POST");

function 
anzahl_geladen(erfolgreich){
    if(
erfolgreich){
        
trace("Anzahl Termine Gesamt:"+this.terminanzahl);
        
_root.terminnummer this.terminanzahl;
        
gotoAndPlay(_currentframe 1);
    }
}
stop(); 
frame2:

PHP-Code:
termin_lv = new LoadVars();
termin_lv.onLoad termin_geladen;

termin_lv.sendAndLoad("termin/termin"+_root.terminnummer+".txt",termin_lv,"POST");

function 
termin_geladen(erfolgreich){
    if(
erfolgreich){
        
gotoAndPlay(_currentframe 1);
    }
}
stop(); 
frame3

PHP-Code:
termintextkomplett += termin_lv.termindatum+"<br><br>"+termin_lv.termintext+"<br><br>--<br>";
trace(termintextkomplett);
_root.terminnummer--;
trace("Terminnummer reduziert:"+_root.terminnummer);
if(
_root.terminnummer == 0){
    
stop();
}
else{
    
gotoAndPlay(_currentframe 1);

dieser Movieclip liegt dann im 4.frame meines Films welcher wie folgt in den hauptfilm geladen wird:

PHP-Code:
_root.button_2.onRelease = function() { 
        
unloadMovie(frame); //hier werden evtl schon geladene Filme entladen
        
_level10.gotoAndStop(2); //das ist mein preloader
        
loadMovie("news.swf",frame); //hier lade ich den film 
woran könnte es liegen dass in dem fall nichts angezeigt wird?
ich habe testweise mal den Movieclip in einen sonst leeren film gelegt, da funktioniert er auch...

jetzt bin ich wieder ratlos, aber dennoch schon mal froh das es etwas klappt
Hoodoo ist offline   Mit Zitat antworten
Alt 03-12-2004, 12:12   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
woran könnte es liegen dass in dem fall nichts angezeigt wird?
_root zeigt immer auf die Hauptzeitleiste des Films. Wenn du den Film jetzt in einen "Containerfilm" lädst, zeigt _root auf die Hauptzeitleiste des Containerfilms und deine Objektpfade stimmen nicht mehr.

Ich nutze dann immer globale Referenzen, die kann man von jeder Zeitleiste aufrufen, ohne immer den genauen Objektpfad zum nachgeladenen Film kennen zu müssen.

ActionScript:
  1. _global.referenz = this;
  2. //...
  3. function anzahl_geladen(erfolgreich){
  4.     if(erfolgreich){
  5.         trace("Anzahl Termine Gesamt:"+this.terminanzahl);
  6.         _global.referenz.terminnummer = this.terminanzahl;
  7.         _global.referenz.gotoAndPlay(_global.referenz._currentframe + 1);
  8.     }
  9. }
  10. //etc
  11.  
  Mit Zitat antworten
Alt 03-12-2004, 12:49   #6 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
Thumbs up

also an den pfaden hat es nicht gelegen...ich hab mal alle notwenidigen pfade mit dies _global.referenz, die ja doch eigentlich nur ein this. ersetzt, erweitert, dann hatte ich nachwie vor das gleiche problem

um es nochmal zusammen zu fassen

hauptfilm lädt film(news.swf)

film steuert preloader

im letzten frame des film stoppt er dann und zweigt folgendes an:

- ein dynamisches textfeld mit news(welches auf knopfdrück eine andere variable ein lädt)
- ein dynamscihes textfeld in dem direkt 2 variablen aus eine dynamischen anzahl txt dateien eingelesen werden.


das erste mit den news funktionierte schon immer, als ich den eben erstellten mc dann da hinzugefügt habe, funktionierte dieser nicht, egal was ich auch machte.
Dann habe ich die news.swf, welche in den hauptfilm geladen wird neu gemacht, aber auch nur so, dass ich das script für den preloader kopiert habe und dann aus der alten news bibliothek den mc für die news und aus einem anderen film den mc für die termine kopiert habe. Daher habe ich ja eigentlich nichts verändert! aber auf einmal geht es einwandfrei...


Warum auch immer, aber es geht, weil es ja auch so gehen müsste, wo der fehler im endeffekt war weiss ich nicht, aber es geht.

Vielen Vielen Dank
ich hab wieder eine menge gelernt, zumal mittels dem loadvars ist das ganze jetz viel kürzer als zuvor

Danke
Hoodoo ist offline   Mit Zitat antworten
Alt 03-12-2004, 17:37   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
verdammt...wenn ich das ganze hochlade gehts nicht mehr...

woran kann das denn nun schon wieder liegen?

wenn ich das ganze auf meinem PC abspiele gehts
wenn ich es in eine html seite inbaue auf meinem pc gehts auch
nur wenn ich alles dann hochlade gehts nich mehr
Hoodoo ist offline   Mit Zitat antworten
Alt 03-12-2004, 18:04   #8 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
Hier nochmal mein code mit kommentaren ... vieleicht sieht ja einer den fehler...

1.Frame
PHP-Code:
//deklaration später benötigter Variablen
    
farbedatum "#FF0000";
    
farbetermintext "#FFFFFF";
    
termintextkomplett "";
    
terminnummer 0;

 
_global.referenz this

//Terminanzahl wird geladen
//wenn sie erfolgreich geladen wurde wird weiter geleitet zum nächsten bild
Anzahl_lv = new LoadVars();
Anzahl_lv.onLoad anzahl_geladen;

Anzahl_lv.sendAndLoad("termin/terminmenge.txt?" add random(99999),Anzahl_lv,"POST");

function 
anzahl_geladen(erfolgreich){
    if(
erfolgreich){
        
_global.referenz.terminnummer this.terminanzahl;
        
_global.referenz.gotoAndPlay(_global.referenz._currentframe 1);
    }
}
stop(); 

2.Frame
PHP-Code:
//Die Termin Daten des Termins mit der aktuellen
//Terminnummer werden eingelesen
termin_lv = new LoadVars();
termin_lv.onLoad termin_geladen;

termin_lv.sendAndLoad("termin/termin"+_global.referenz.terminnummer+".txt?" add random(99999),termin_lv,"POST");

//Wenn die Daten erfolgreich geladen wurden gehts weiter zum
//nächsten frame wo die Variablen verwendet werden
function termin_geladen(erfolgreich){
    if(
erfolgreich){
        
_global.referenz.gotoAndPlay(_global.referenz._currentframe 1);
    }
}
stop(); 

3.Frame
PHP-Code:
//Die aktuell geladenen Variablen werden in die gesamt Variable geschrieben
_global.referenz.termintextkomplett += "<font color=\""+farbedatum+"\"><b>"+termin_lv.termindatum+"</b></font><br><br><font color=\""+farbetermintext+"\">"+termin_lv.termintext+"</font><br><br>-----------------------------------------------------------------<br>";
//Die zahl des geladenen Termins wird um 1 verringert
//damit der nächste Termin eingeladen wird beim 
//nächsten durchlauf der schleife
_global.referenz.terminnummer--;
//überprüfung ob die Schleife weitergeführt wird oder hier gestoppt werden muss
if(_global.referenz.terminnummer == 0){
//permanente überprüfung des gesamt textes um entsprechend der srcrollfähigkeit des textes
//die scroll buttons zu betonen oder leicht ausgeblendet wird
    
onEnterFrame = function(){
        if(
_global.referenz.termintextkomplett.scroll 1){
            
_global.referenz.termin_hoch_btn._alpha 99;
            }
            else{ 
_global.referenz.termin_hoch_btn._alpha 20;}

        if(
_global.referenz.termintextkomplett.scroll _global.referenz.termintextkomplett.maxscroll){
            
_global.referenz.termin_runter_btn._alpha 99;
            }
            else{ 
_global.referenz.termin_runter_btn._alpha 20;}
    }
    
stop();
}
else{
    
_global.referenz.gotoAndPlay(_global.referenz._currentframe 1);

wie gesagt am pc funktioniert alles egal was ich mache...

ich wäre echt froh wenn mir da noch einer heflfen könnte...
Hoodoo ist offline   Mit Zitat antworten
Alt 04-12-2004, 09:32   #9 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
verdammt...wenn ich das ganze hochlade gehts nicht mehr...
Wie meinst du das?
  Mit Zitat antworten
Alt 04-12-2004, 15:46   #10 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
nun, dass meine ich so, dass wenn ich die filme auf meinen webspace lade und dann versuche mit meinem browser die seite zu öffnen auf denen das gnaze liegt, funktioniert nachwievor alles bis auf das laden der variablen der termine, wodurch die texte nicht angezeigt werden...

da kommt der mc nicht über den ersten frame hinaus ...

ich hab mal die fla angehängt, in der die variablen geladen werden sollen, dieser film wird bei mir wie gesagt vorher noch in einen mc im hauptfilm geladen...
Angehängte Dateien
Dateityp: rar news.rar (12,2 KB, 5x aufgerufen)
Hoodoo ist offline   Mit Zitat antworten
Alt 04-12-2004, 23:08   #11 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Wow wow wow, Level 10... Wofür benötigst du 10 Level? Und dann noch
ActionScript:
  1. _root._level10.preloader_animation.geladen = +prozent+"%";
Als wenn _root nicht schon schlimm genug wäre, das ganze auch noch mit Level 10 zu kombinieren...

Schau dir mal die Threads zu Leveln, Tiefen und _root an, dann weisst du, was ich meine...
  Mit Zitat antworten
Alt 05-12-2004, 15:16   #12 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
ja das ist vieleicht ein wenig umständlich gemacht, aber daran kann das nicht liegen...der preloader den ich damit anspreche funktioniert einwandfrei...

ich werd mal bei den pfad threads schauen, aber bin mir grad nicht sicher wo ich ein pfadpoblem haben könnte

warum level 10? weil ich ganz am anfang meinen preloader in level10 lade und immer abspielen lasse wenn ein weiterer film geladen wird...
Hoodoo ist offline   Mit Zitat antworten
Alt 05-12-2004, 20:46   #13 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
eil ich ganz am anfang meinen preloader in level10 lade
Da reicht auch eine beliebige Tiefe auf Level 0 aus...
  Mit Zitat antworten
Alt 05-12-2004, 23:59   #14 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
ja, aber ist das denn schlimm, hat das irgendwelche negativen auswirkungen?
bisher hat es so ohne probleme funktioniert und mit dem preloader hab ich ja auch keine probleme...
Hoodoo ist offline   Mit Zitat antworten
Alt 06-12-2004, 15:20   #15 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Beiträge: 37
so...es ist endlcih geschafft


ich habe das loadVars.sendAndLoad was sie mirempfohlen haben z verwenden ausgetauscht gegen loadVars.load

und nun funktioniert das ganze auch wenn ich es auf meinem webserver laufen lasse...


Danke aber trotzdem...sie haben mir sehr geholfen...
Hoodoo 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:49 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele