Esiste un modo migliore per ottenere un riferimento a un clip filmato in ActionScript usando una stringa senza valutazione

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

  •  02-07-2019
  •  | 
  •  

Domanda

Ho creato un sacco di clip filmato che hanno tutti nomi simili e poi dopo qualche altro evento ho creato una stringa come:

var clipName = "barLeft42"

che si tiene all'interno di un altro filmato chiamato 'cosa'.

Sono stato in grado di ottenere un riferimento usando:

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

Ma sembra male - c'è un modo migliore?

È stato utile?

Soluzione

I clip filmato sono raccolte in ActionScript (come la maggior parte e simili a JavaScript, tutto è fondamentalmente coppie chiave-valore). Puoi indicizzare nella raccolta usando parentesi quadre e una stringa per il nome della chiave come:

_root.thing[ "barLeft42" ]

Questo dovrebbe fare al caso tuo ...

Altri suggerimenti

Il modo migliore, che evita di usare il eval obsoleto, è indicizzare tra parentesi quadre:

var movieClip = _root.thing[ "barLeft42" ]

Ma il modo migliore è mantenere i riferimenti alle clip create e accedervi per riferimento, anziché per nome:

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 ];

Puoi usare le parentesi e includere le variabili al loro interno ... quindi se volevi farle scorrere tutte insieme puoi farlo:

for (var i=0; i<99; i++) {
  var clipName = _root.thing["barLeft"+i];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top