Gibt es eine bessere Art und Weise halten, einen Verweis auf einen Movieclip in Actionscript eine Zeichenfolge ohne eval zu erhalten mit
-
02-07-2019 - |
Frage
Ich habe eine Reihe von Filmclips erstellt, die alle ähnliche Namen haben und dann nach einem anderen Ereignis habe ich eine Zeichenfolge wie aufgebaut:
var clipName = "barLeft42"
, die in einem anderen Movieclip mit dem Namen ‚Ding‘ gehalten wird.
konnte ich halten, einen Verweis erhalten mit:
var movieClip = Eval( "_root.thing." + clipName )
Aber das fühlt sich schlecht - gibt es einen besseren Weg,
?Lösung
Movieclips 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 mit eckigen Klammern und eine Zeichenfolge für die Schlüsselnamen wie:
_root.thing[ "barLeft42" ]
Das sollte den Trick für Sie tun ...
Andere Tipps
Der bessere Weg, der den veralteten eval
vermeidet verwenden, ist zu indizieren mit eckigen Klammern:
var movieClip = _root.thing[ "barLeft42" ]
Aber der beste Weg ist, Verweise zu halten, um die Clips, die Sie machen, und auf sie zugreifen Bezug genommen wird, nicht anhand des Namens:
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 ];
Sie können Klammern verwenden und sind Variablen in ihnen ... also, wenn Sie eine Schleife durch sie wollten alles, was Sie tun können:
for (var i=0; i<99; i++) {
var clipName = _root.thing["barLeft"+i];
}