Есть ли лучший способ получить ссылку на видеоклип в actionscript, используя строку без eval
-
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];
}