Gibt es einen besseren Weg, um einen Verweis auf einen Movieclip in ActionScript mit einer Zeichenfolge ohne Eval


1

zu erhalten Ich habe eine Reihe von Videoclips erstellt, die alle ähnliche Namen haben und dann nach einem anderen Ereignis habe ich eine Zeichenfolge aufgebaut wie:

var clipName = "barLeft42" 

die in einem anderen Film namens 'Sache' gehalten wird. mit

konnte ich halten, einen Verweis erhalten:

var movieClip = Eval("_root.thing." + clipName) 

Aber das fühlt sich schlecht - gibt es einen besseren Weg?

4

Filmclips sind Sammlungen in ActionScript (wie die meisten und ähnlich wie JavaScript, alles ist im Grunde Schlüssel-Wert-Paare). Sie können Index in die Sammlung eckige Klammern und eine Zeichenfolge für die Schlüsselnamen wie:

_root.thing[ "barLeft42" ] 

, die den Trick für Sie tun sollen ...


0

Der bessere Weg, der die veralteten eval vermeidet die Verwendung, ist mit eckigen Klammern Index:

var movieClip = _root.thing[ "barLeft42" ] 

Aber der beste Weg ist, Verweis auf die Clips, um Sie zu machen, und sie durch Verweis zugreifen, anstatt nach Namen:

var movieClipArray = new Array(); 
for (var i=0; i<45; i++) { 
    var mc = _root.thing.createEmptyMovieClip("barLeft"+i, i); 
    // ... 
    movieClipArray.push(mc); 
} 

// ... 

var movieClip = movieClipArray[ 42 ]; 

0

können Sie Klammern verwenden und Variablen in ihnen gehören ... also, wenn Sie eine Schleife durch sie wollten alles, was Sie können dies tun:

for (var i=0; i<99; i++) { 
    var clipName = _root.thing["barLeft"+i]; 
}