getURL dynamisch

Bunny1502

Mitglied
Hallo!
Folgendes Problem:
Ich belege Variablen mittles einer Schleife, anschließend möchte ich, dass wenn man den entsprechenden Button anklickt, die jeweilige URL geöffnet wird:
Code:
for(var i = 0; i<= 10; i++){
        
_root["link"+i] = eval("link"+i);

_root["linkButton"+i].onRelease = function(){    
                
                                                          
                        getURL(_root["link"+i] , "_blank");
                        
                    }
            }
Wenn ich das so mache wird mir undefined ausgegeben, wenn ich link0, link1 etc. direkt eingebe wird auch der entsprechende Link angezeigt.
Wie muss ich auf die dynamisch erstellten Variablen zugreifen, damit es richtig funktioniert?

Gruß, Bunny1502
 
Hi,

in dem Augenblick, wo Du auf den Button klickst, ist "i" schon längst unbekannt, da die Schleife ja sofort abgearbeitet wird. Du musst den jeweiligen Index (oder gleich den entsprechenden Link) als Membervariable im Button speichern:
Code:
for(var i = 0; i<= 10; i++){
    _root["linkButton"+i]._url = _root["link"+i]; // Link als Member speichern
    _root["linkButton"+i].onRelease = function(){    
        getURL(this._url , "_blank");
    }
}

Das:
Code:
_root["link"+i] = eval("link"+i);
ist übrigens Blödsinn, da _root["link"+i] und eval("link"+i) exakt das selbe ist ;)

Gruß
.
 
Das:
_root["link"+i] = eval("link"+i);

ist übrigens Blödsinn, da _root["link"+i] und eval("link"+i) exakt das selbe ist ;)
In meinem Fall nicht, da parallel ein php-Script aufgerufen wird, welches link + i ausgibt und die Varibalen link + i in Flash noch nicht existieren und auf diese Art erstellt werden.

Ich hab das bei mir so geändert wie du gesagt hast, allerdings öffnet sich nach dem klicken ein neues Browserfenster in dem wieder meine swf abgespielt wird, von dem Link keine Spur!?
 
Hi,

In meinem Fall nicht, da parallel ein php-Script aufgerufen wird, welches link + i ausgibt und die Varibalen link + i in Flash noch nicht existieren und auf diese Art erstellt werden.
Mir ist nicht klar, was das eine mit dem anderen zu tun haben sollte; "eval" führt keine Operationen auf dem Ausdruck aus, sondern gibt lediglich Objektreferenzen zurück.

Ich hab das bei mir so geändert wie du gesagt hast, allerdings öffnet sich nach dem klicken ein neues Browserfenster in dem wieder meine swf abgespielt wird, von dem Link keine Spur!?
Poste in dem Fall bitte mal Deine .fla. Die Objekte "_root["linkButton"+i]" sollten MovieClips (und keine Schaltflächensymbole) sein.

Gruß
.
 
Die Objekte "_root["linkButton"+i]" sollten MovieClips (und keine Schaltflächensymbole) sein.
Sind es! Aber ich habe jetzt festgestellt, dass das mit _url überhaupt nicht gehen kann, da _url schreibgeschützt ist.
In der Hilfe steht: _url: String [schreibgeschützt]:Ruft die URL der swf, jpeg, gif oder png-Datei ab, aus der ein Movieclip heruntergeladen wurde.
Das erklärt schon mal warum meine swf wieder abgespielt wurde. Also dachte ich mir, probiers mal mit einem "Namen" der nicht vorbelegt ist, also hab ich aus der _url eine "testUrl" gemacht und jetzt wird im Eingabefeld des Browsers der jeweilige Variablen Name, also "link+i" angezeigt, aber nicht der Inhalt der Variablen.
 
... dann existieren auf _root keine so benannten Variablen. Wenn Du Dich nicht auf der Hauptzeitleiste befindest, musst Du eine andere Referenz angeben; da ich Deine Filmstruktur nicht kenne, bin ich davon ausgegangen, dass sie auf _root liegen. ;)

Probiers mal so:
Code:
_root["linkButton"+i].destUrl = this["link"+i];
, oder poste Deine komplette fla, damit ich nicht ins Blaue raten muss. ;)

_url ist in der Tat ein reservierter Begriff (hab halt nicht alles im Kopf) und für MovieClip-Objekte schreibgeschützt. Sorry. :-(

Gruß
.
 
Seltsam, seltsam, hab es mit this ausprobiert und es hat nicht funktioniert, dann habe ich es zurück in _root geändert, jetzt geht es. Wahrscheinlich hatte ich einen kleinen Fehler drin den ich nicht bermerkt habe. Hauptsache, jetzt geht es!
Danke!
 
Zurück