Есть ли лучший способ получить ссылку на видеоклип в actionscript, используя строку без eval

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

  •  02-07-2019
  •  | 
  •  

Вопрос

Я создал кучу видеоклипов, все из которых имеют похожие названия, а затем после какого-то другого события я создал строку типа:

var clipName = "barLeft42"

который содержится внутри другого видеоклипа под названием "вещь".

Мне удалось получить ссылку, используя:

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

Но это неприятно - есть ли способ получше?

Это было полезно?

Решение

Видеоклипы - это коллекции в actionscript (как и большинство других и похожих на javascript, все в основном состоит из пар ключ-значение).Вы можете проиндексировать коллекцию, используя квадратные скобки и строку для имени ключа, например:

_root.thing[ "barLeft42" ]

Это должно сработать за вас...

Другие советы

Лучший способ, который позволяет избежать использования устаревшего eval, заключается в указании квадратными скобками:

var movieClip = _root.thing[ "barLeft42" ]

Но лучший способ - сохранять ссылки на клипы, которые вы создаете, и получать к ним доступ по ссылке, а не по названию:

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

Вы можете использовать квадратные скобки и включать в них переменные...итак, если вы хотите просмотреть их все, вы можете сделать это:

for (var i=0; i<99; i++) {
  var clipName = _root.thing["barLeft"+i];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top