Textfeld dynamisch auslesen

intercorni

Erfahrenes Mitglied
Hallo,

ich habe hier eine fla die ich anpassen muss. Diese beinhaltet ein dynamisches Dropdown-Menue, welches die Beschriftungen dieser Buttons aus einem externen txt file bezieht. Hier mal ein Beispiel für einen Button:

PHP:
Angela Salvo;f;salvo;drop_1.bt_6;angelasalvo.html;Angela Salvo;Beaujolais Nouveaus;
Als erstes also der Name des Buttons, dann welcher Button (der 6.), eine HTML-Seite die parallel dazu geöffnet wird, nochmal der Name sowie zum Schluss eine Headline. Und um diese Headline geht es, die habe ich zusätzlich angefügt und diese soll in einem Textfeld angezeigt werden.

Das Textfile (drop1.txt) wird also geladen:
PHP:
sub_1_buttons_config_Data = new LoadVars();
    sub_1_buttons_config_Data.load ("medien/start_config/drop1.txt");
    sub_1_buttons_config_Data.onData = function(sub_1_buttons_config_Data){
        _root.sub_1_buttonstempArray = new Array();
        _root.sub_1_buttonstempArray = sub_1_buttons_config_Data.split(String.fromCharCode(13));
    }
Dann gehts mit der Verwertung los:
PHP:
// Function drop_1_fill Füllt die Menueeinträge des ersten Drop Up Menues
//
function drop_1_fill(){
    z = 0;
    clip_counter = 0;
    do{    
    // Übergabe der Elemente
    // text_feld.text - Button Beschriftung
    // link - Aufzurufender Content
    // con_typ  - Art des aufzurufenden Contents "h" für HTML file "f" für .swf Content
    //
        tempArray = new Array();
        tempArray = _root.sub_1_buttonstempArray[clip_counter].split(";")
        eval("_root." + tempArray[3]).text_feld.text= tempArray[0].substr(1,tempArray[0].length);
        eval("_root." + tempArray[3]).link = tempArray[2];
        eval("_root." + tempArray[3]).con_typ = tempArray[1];
        eval("_root." + tempArray[3]).wt_name = tempArray[4];
        eval("_root." + tempArray[3]).wt_title = tempArray[5];
        eval("_root." + tempArray[3]).sub_beschreib = tempArray[6];
        clip_counter +=1
        // Funktionsdefinition für die Bottonevents Rollover und Rollout
        eval("_root." + tempArray[3]).onRollOver= function() {
                if (_root.lastbutton != "_root.drop_1." + this._name){
                    this.gotoAndStop(2);
                    this.text_feld2.text= tempArray[6];
                }
        }
        eval("_root." + tempArray[3]).onRollOut= function() {
                if (_root.lastbutton != "_root.drop_1." + this._name){
                    this.gotoAndStop(1);
                }
        }        
        // Funktionsdefinition für Buttonevent Release
        eval("_root." + tempArray[3]).onRelease= function() {
            // Aufruf eines .swf clips
            if (this.con_typ == "f"){
                // nur wenn kein sich kein anderer Clip im Ladevorgang befindet
                if(_root.clip_loader == 0){
                    // nur wenn der Bereich icht bereits gewählt ist
                    if (_root.lastbutton != this._name){
                        // vorheriger Button wird wieder zurückgesetzt
                        eval(_root.lastbutton).gotoAndStop(1);
                        _root.lastbutton ="_root.drop_1." + this._name;
                        _root.drop_1_select = 3;
                        if(_root.drop_2_select ==3){
                            _root.drop_2_select = 2;
                        }
                        if(_root.drop_3_select ==3){
                            _root.drop_3_select = 2;
                        }
                        _root.bg.gotoAndStop(2);
                        _root.clip_loader = 1;
                        // Webtracking aufruf                        
                        _root.clip_name = this.link
                        _root.clip_wt_name = this.wt_name
                        _root.clip_wt_title = this.wt_title    
                        _root.clip_laden();
                    }
                }
            }
            // AUfruf einer HTML Seite
            if (this.con_typ == "h"){
                getURL(this.link,"_blank")
                // Webtracking aufruf
                _root.clip_wt_name = this.wt_name
                _root.clip_wt_title = this.wt_title
                _root.webtrack();
            }
        }
    }while (clip_counter < _root.sub_1_buttonstempArray.length)
}
Ich habe jetzt ein neues Array (tempArray[6]) angelegt, in welches eine Headline gespeichert wird.
Diese Headline soll in einem dynamischen Textfeld angezeigt werden, sobald die Maus über den dazugehörigen Button fährt. Habe hier an dieser Stelle mal das Textfeld hingelegt und versucht, es anzusprechen:
PHP:
// Funktionsdefinition für die Bottonevents Rollover und Rollout
        eval("_root." + tempArray[3]).onRollOver= function() {
                if (_root.lastbutton != "_root.drop_1." + this._name){
                    this.gotoAndStop(2);
                    this.text_feld2.text= tempArray[6];
                }
        }
Allerdings füllt es sich nicht mit dem Inhalt des Textfeldes.
Wie kann ich also dem Textfeld sagen das es die Headline (tempArray[6] beim MouseOver aus der txt ziehen soll?
Hoffe, es ist einigermaßen Verständlich?

Gruss,

Cornel
 
Hi,

1. Für besseres Verständnis wäre es sinnvoll, wenn Du die .fla und die Textdatei einmal posten würdest.

2. Statt "eval" solltest Du den Array-Zugriffsoperator verwenden:
Code:
// Beispiel:
this["_root." + tempArray[3]].link = tempArray[2];

3. Wird das Textfeld korrekt adressiert? Was gibt in Deiner onRollOver-Methode
Code:
trace(this.text_feld2);
aus?

4. Durch das "gotoAndStop(2)" kannst Du Zugriff auf a) das Textfeld, b) das Array "tempArray", oder c) alle weiteren Codezeilen verliegen; je nach Deiner Framestruktur. Ein Grund mehr, die .fla zu posten.

Gruß
.
 
Die fla kann ich leider nicht posten.
Ich habe das Array jetzt mal so angelegt:

this["_root." + tempArray[3]].sub_beschreib = tempArray[6];

Wobei ich allerdings sub:beschreib willkürlich benannt habe, ohne dess
Bedeutung genau zu kennen. Dachte es wäre ein Art Bezeichner?

Ein Trace auf dem Rollover gibt folgendes aus:

_level0.drop_1.bt_6.text_feld2

Wie also bekomme ich die tempArray[6] Infos dort rein?

LG

Cornel
 
Zuletzt bearbeitet:
Hi,

1. ein reserviertes Wort namens "sub_beschreib" gibt es nicht.

2. Was gibt ein trace auf "temp_array[6]" aus? Wenn sich beide Objekte (das Array-Element und das Textfeld) in der onRollOver-Methode ansprechen lassen, sollte die Übergabe funktionieren. Es kann natürlich sein, dass "temp_array" als lokale Variable einer Methode angelegt wird, und zum Zeitpunkt Deiner Übergabe nicht mehr existiert. Wenn sich die .fla nicht posten lässt, bräuchte ich zumindest die komplette Funktionsstruktur und die Orte, an Denen Du die Methoden aufrufst.

Gruß
.
 
Hallo,

setze ich ein Trace dazwischen:
PHP:
if (_root.lastbutton != "_root.drop_1." + this._name){
                    this.gotoAndStop(2);
                    trace("tempArray[6]="+tempArray[6]);
                    this.text_feld2.text= tempArray[6];
Wir folgendes ausgegeben:

PHP:
tempArray[6]=
 
... demzufolge ist die Variable an dieser Stelle nicht definiert.

Wenn es sich tatsächlich um eine Zeitleistenvariable (keine lokale Variable einer Funktion) handelt, die in diesem Frame verfügbar ist, musst Du die korrekte Adressierung herausfinden. Im Falle, dass sich "tempArray" auf _root befindet, wäre das z.B.:
Code:
_root.tempArray[6];

Gruß
.
 
Zurück