평가없이 문자열을 사용하여 Actionscript의 영화 클립에 대한 참조를 얻는 더 좋은 방법이 있습니까?

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

  •  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];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top