평가없이 문자열을 사용하여 Actionscript의 영화 클립에 대한 참조를 얻는 더 좋은 방법이 있습니까?
-
02-07-2019 - |
문제
나는 모두 비슷한 이름을 가진 영화 클립을 만들었고 다른 이벤트 후에는 다음과 같은 문자열을 만들었습니다.
var clipName = "barLeft42"
'Thing'이라는 다른 영화 클립 안에서 개최됩니다.
나는 다음을 사용하여 참조를 잡을 수 있었다.
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];
}
제휴하지 않습니다 StackOverflow