2012-02-10 3 views
0

두 개의 MovieClip이 같은 종류인지 아닌지 확인하려고합니다.두 개의 MovieClip이 같은지 확인하십시오.

저는 사전에 저장된 MovieClips 컬렉션이 있습니다. 그런 다음 항목을 반복하고 각 MovieClip을 함수에 전달 된 MovieClip과 비교합니다. 문제는 작동하지 않는다는 것입니다. 어느 쪽도하지 않습니다 (==).

아이디어가 있으십니까?

건배.

public function hideAllPagesExcept(activatedPage:MovieClip):void { 
     for(var key:String in _navItems) { 
      var mc:MovieClip = MovieClip(_navItems[key]); 
      if(mc is activatedPage) { 
       trace("Same"); 
      } 
     } 
    } 

답변

2

그래도 작동하지 않으면 전달중인 MovieClip은 사용자가 생각하는 것과 다릅니다.

public function hideAllPagesExcept(activatedPage:MovieClip):void { 
    for each (var mc:MovieClip in _navItems) { 
     if(mc == activatedPage) { 
      trace("Same"); 
     } 
    } 
} 
+0

네가 맞아, 나는 지나가는 매개 변수에 오타를 만들었다;) 고마워. – Nick

0

문제는 사전의 키를 사용하는 방식입니다. 평등을 확인하기 위해 ==을 사용하는 것이 좋습니다. mc is activatedPage 줄이 잘못되었습니다. 과 같이 is 연산자를 사용하여 개체 유형을 확인합니다.

사전의 키가 문자열이라고 가정합니다. 항상 그렇지는 않습니다. 사전의 요점은 어떤 오브젝트를 키로 사용할 수 있다는 것입니다. 문자열 기반 키가 모두 필요한 경우 Object를 사용하십시오.

for(var key:String in _navItems)를 사용하여 당신은 키가 존재하지 않는 convertion 후 [object Object]_navItems["[object Object]"]처럼 보일 수 있기 때문에, mcnull되는 리드하는 문자열 키를 변환한다.

The_asMan과 같이 for(var key:Object in _navItems)을 사용하거나 각 루프에 을 사용하십시오 (). 키 대신에 각 키의 값을 반복합니다.

관련 문제