Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-04-2006, 12:52   #1 (permalink)
Neuer User
 
Benutzerbild von Synthyx
 
Registriert seit: Feb 2006
Ort: Rotenburg
Beiträge: 5
Unhappy Variablen aus function weiterverwenden ?

Hallo,

aus folgender Funktion (Function) möchte ich mehrere Variablen aus einem externen Textfile weiterverwenden.

PHP-Code:
//Zeitleiste-Bild2
function loadMyText(evt) { 
    var 
loadit_lv:LoadVars = new LoadVars(this); 
    
loadit_lv.load("textdateiUTF8.txt"); 
    
loadit_lv.onLoad = function(success:Boolean) { 
        if (
success) { 
        
trace("Textdatei wurde geladen"); 
        
// Auslesen der textdateiUTF8-Variablen und speicherung in neue Variablen, die ausserhalb der Funktionen benutzt werden können. imagecount ist die variable, die die Anzahl der in der textdateiUTF8 enthaltenen Datensätze enthält            
        
for (i=1== this.imagecounti++) { 
                
this["bild"+i] = this["image"+i]; 
                
this["imagetitel"+i] = this["imagetitle"+i]; 
                
this["imagedatum"+i] = this["imagedate"+i]; 
                
this["inhalt"+i] = this["content"+i]; 
            } 
            
gotoAndPlay(3); 
        } else { 
            
trace("Could not load text file."); 
        } 
    }; 

loadMyText(); 
stop(); 
Werden innerhalb der Funktion mit dem Befehl Trace die Variablen ausgegeben, funktioniert nur folgendes

PHP-Code:
trace(content1); 
die "Übersetzte Variable" kann innerhalb der Funktion jedoch nicht mit Trace wiedergegeben werden

PHP-Code:
trace(inhalt1); //undefined 
Das Problem ist wohl, dass lokale Variablen, die innerhalb eines Funktionsblocks deklariert sind, nach Ende des Funktionsblock nicht mehr gültig sind, also als undefined getraced werden.

Ist mein Scriptansatz überhaupt im Prinzip richtig? Falls ja, wie kann ich bestimmen, dass die in der Funktion geladenen Variablen auch ausserhalb der Funktion mit den gewünschten gefüllt sind?

Freue mich schon auf Antworten. Hab schon Kopfweh vom vielen Grübeln
__________________
Viele Grüße

Synthyx
Synthyx ist offline   Mit Zitat antworten
Alt 02-04-2006, 13:07   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!
Das "this" bezieht sich ja auf das LoadVars-Objekt.

PHP-Code:
//Zeitleiste-Bild2 
function loadMyText(tl) {
    var 
loadit_lv:LoadVars = new LoadVars(this);
    
loadit_lv.load("textdateiUTF8.txt");
    
loadit_lv.onLoad = function(success:Boolean) {
        if (
success) {
            
trace("Textdatei wurde geladen");
            
// Auslesen der textdateiUTF8-Variablen und speicherung in neue Variablen, die ausserhalb der Funktionen benutzt werden können. imagecount ist die variable, die die Anzahl der in der textdateiUTF8 enthaltenen Datensätze enthält             
            
for (i=1== this.imagecounti++) {
                
tl["bild"+i] = this["image"+i];
                
tl["imagetitel"+i] = this["imagetitle"+i];
                
tl["imagedatum"+i] = this["imagedate"+i];
                
tl["inhalt"+i] = this["content"+i];
            }
            
gotoAndPlay(3);
        } else {
            
trace("Could not load text file.");
        }
    };
}
loadMyText(this);
stop(); 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 02-04-2006, 13:15   #3 (permalink)
Neuer User
 
Benutzerbild von the binary
 
Registriert seit: Jul 2001
Ort: Berlin | Friedrichshain
Beiträge: 3.561
Zitat:
Das "this" bezieht sich ja auf das LoadVars-Objekt.
always the same...
__________________
8bm | join ff@BOINC
formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn
the binary ist offline   Mit Zitat antworten
Alt 02-04-2006, 13:17   #4 (permalink)
Neuer User
 
Benutzerbild von Synthyx
 
Registriert seit: Feb 2006
Ort: Rotenburg
Beiträge: 5
Hallo!

Dank für die Antwort, aber aus Deiner Änderung werde ich nicht schlau.

Was meinst Du mit "tl"? (Sprich: Tee El)

PHP-Code:
for (i=1== this.imagecounti++) { 
                
tl["bild"+i] = this["image"+i]; 
                
tl["imagetitel"+i] = this["imagetitle"+i]; 
                
tl["imagedatum"+i] = this["imagedate"+i]; 
                
tl["inhalt"+i] = this["content"+i]; 
            } 
__________________
Viele Grüße

Synthyx
Synthyx ist offline   Mit Zitat antworten
Alt 02-04-2006, 13:22   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Öhm...

function loadMyText(tl) { ...

loadMyText(this);

Wenn du das "var" und die Typisierung weglässt, ist dein lv-Objekt übrigens auch noch außerhalb der Funktion bekannt und du kannst dann einfach mit
PHP-Code:
trace(loadit_lv.content1
z.B. drauf zugreifen.

edit -> ...oder du kannst natürlich die Vars auch global machen:
PHP-Code:
_global["bild"+i] = this["image"+i]; 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (02-04-2006 um 13:24 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 02-04-2006, 14:03   #6 (permalink)
Neuer User
 
Benutzerbild von Synthyx
 
Registriert seit: Feb 2006
Ort: Rotenburg
Beiträge: 5
Unhappy

Zitat:
Zitat von Der Frager
Öhm...

function loadMyText(tl) { ...

loadMyText(this);

Wenn du das "var" und die Typisierung weglässt, ist dein lv-Objekt übrigens auch noch außerhalb der Funktion bekannt und du kannst dann einfach mit
PHP-Code:
trace(loadit_lv.content1
z.B. drauf zugreifen.

edit -> ...oder du kannst natürlich die Vars auch global machen:
PHP-Code:
_global["bild"+i] = this["image"+i]; 
Hi,

sorry, aber wenn ich das "var" weglasse, wird die Funktion gar nicht mehr ausgeführt:

PHP-Code:
//Zeitleiste-Bild2 
function loadMyText(evt) {  
    
loadit_lv.load("textdateiUTF8.txt");  
    
loadit_lv.onLoad = function(success:Boolean) {  
        if (
success) {  
        
trace("Textdatei wurde geladen");  
        
// Auslesen der textdateiUTF8-Variablen und speicherung in neue Variablen, die ausserhalb der Funktionen benutzt werden können. imagecount ist die variable, die die Anzahl der in der textdateiUTF8 enthaltenen Datensätze enthält             
        
for (i=1== this.imagecounti++) {  
                
_global["bild"+i] = this["image"+i];  
                
_global["imagetitel"+i] = this["imagetitle"+i];  
                
_global["imagedatum"+i] = this["imagedate"+i];  
                
_global["inhalt"+i] = this["content"+i];  
            }  
            
gotoAndPlay(3);  
        } else {  
            
trace("Could not load text file.");  
        }  
    };  
}  
loadMyText();  
stop(); 
Weiterhin geht das mit "_global" auch nicht, wenn ich im ZeitleistenBild10 dann die mit der Funktion in Bild 2 gesetzten Variablen auslesen und in Textfelder schaufeln will:

PHP-Code:
 //Zeitleiste-Bild10
1
ueberschrift_txt
.text _global["imagetitel"+i];
... 
Und diese Sache mit "tl" habe ich noch nicht verstanden
__________________
Viele Grüße

Synthyx
Synthyx ist offline   Mit Zitat antworten
Alt 02-04-2006, 14:13   #7 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Jetzt hast du ja auch das LoadVars-Objekt gelöscht. Kopier einfach mal den Code aus meiner ersten Antwort in deine Datei.

"tl" ist nur eine Variable, die an die Funktion übergeben wird und darin steht die Zeitleiste (this).
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 02-04-2006, 15:09   #8 (permalink)
Neuer User
 
Benutzerbild von Synthyx
 
Registriert seit: Feb 2006
Ort: Rotenburg
Beiträge: 5
Zitat:
Zitat von Der Frager
Jetzt hast du ja auch das LoadVars-Objekt gelöscht. Kopier einfach mal den Code aus meiner ersten Antwort in deine Datei.

"tl" ist nur eine Variable, die an die Funktion übergeben wird und darin steht die Zeitleiste (this).
Hi,

jetzt bin ich noch mehr verwirrt als vorher.

Wenn ich also Deinen Code aus der ersten Antwort nehme:

PHP-Code:
//Zeitleiste-Bild2  
function loadMyText(tl) { 
    var 
loadit_lv:LoadVars = new LoadVars(this); 
    
loadit_lv.load("textdateiUTF8.txt"); 
    
loadit_lv.onLoad = function(success:Boolean) { 
        if (
success) { 
            
trace("Textdatei wurde geladen"); 
            
// Auslesen der textdateiUTF8-Variablen und speicherung in neue Variablen, die ausserhalb der Funktionen benutzt werden können. imagecount ist die variable, die die Anzahl der in der textdateiUTF8 enthaltenen Datensätze enthält              
            
for (i=1== this.imagecounti++) { 
                
tl["bild"+i] = this["image"+i]; 
                
tl["imagetitel"+i] = this["imagetitle"+i]; 
                
tl["imagedatum"+i] = this["imagedate"+i]; 
                
tl["inhalt"+i] = this["content"+i]; 
            } 
            
gotoAndPlay(3); 
        } else { 
            
trace("Could not load text file."); 
        } 
    }; 

loadMyText(this); 
stop(); 
wie bekomme ich denn in Zeitleisten-Bild 10 die einzelnen Variablen (zB "inhalt1" bis "inhalt10") in meine dafür vegesehene dynamischen Textfelder. Folgender Code geht nicht:

PHP-Code:
//Zeitleiste-Bild10 

ueberschrift_txt
.text tl["inhalt"+i]; 
... 
__________________
Viele Grüße

Synthyx
Synthyx ist offline   Mit Zitat antworten
Alt 02-04-2006, 15:35   #9 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hülfe...

Also: tl ist nur der Funktion bekannt.

Du kannst jetzt z.B. einfach in die Hauptzeitleiste (ganz am Anfang deines Scripts) "var tl = this" schreiben. Dann muss es auch der Funktion nicht übergeben werden.
PHP-Code:
//Zeitleiste-Bild2   
var tl this
function loadMyText() {  
    var 
loadit_lv:LoadVars = new LoadVars(this);  
    
loadit_lv.load("textdateiUTF8.txt");  
    
loadit_lv.onLoad = function(success:Boolean) {  
        if (
success) {  
            
trace("Textdatei wurde geladen");  
                  
            for (
i=1<= this.imagecounti++) {  
                
tl["bild"+i] = this["image"+i];  
                
tl["imagetitel"+i] = this["imagetitle"+i];  
                
tl["imagedatum"+i] = this["imagedate"+i];  
                
tl["inhalt"+i] = this["content"+i];  
            }  
            
gotoAndStop(3);  
        } else {  
            
trace("Could not load text file.");  
        }  
    };  
}  
loadMyText();  
stop(); 
Bild3:
PHP-Code:
stop()
//
trace(tl)
//
var 1
//
trace(tl["inhalt"+i])
//
trace(inhalt1)
//
trace(this.inhalt1)
//
trace(this["inhalt"+i]) 
Da dürfte dann wohl überall der Wert von inhalt1 ausgegeben werden.

PS: War das eigentlich Absicht, dass da == this.imagecount stand? Dann wird die Schleife nämlich nicht durchlaufen.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (02-04-2006 um 15:37 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 02-04-2006, 16:53   #10 (permalink)
Neuer User
 
Benutzerbild von Synthyx
 
Registriert seit: Feb 2006
Ort: Rotenburg
Beiträge: 5
@ der Frager

Vielen Dank für Deine Geduld und Mühe. Nachdem ich es immer noch nicht hinbekommen habe, habe ich das Konzept mit der Funktion beiseite geschmissen und die gute alte "loadVariables" Geschichte eingebaut. Ich brauchte für mein angeschlagenes Ego unbedingt ein Erfolgserlebnis

Deine Variante habe ich mir extra gespeichert, werde da in den nächsten Tagen rangehen.
__________________
Viele Grüße

Synthyx
Synthyx 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 09:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele