Gibt es eine bessere Art und Weise halten, einen Verweis auf einen Movieclip in Actionscript eine Zeichenfolge ohne eval zu erhalten mit

StackOverflow https://stackoverflow.com/questions/123979

  •  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,

?
War es hilfreich?

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];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top