2011-12-15 2 views
1

플래시로 게임을 만들었습니다. 게임의 특성상 Flash CS4에서 많은 무비 클립을 수동으로 스테이지에 배치했습니다. 그들은 프로그래밍 방식으로 무대에 자식으로 추가되지 않으므로 문서 클래스에서 액세스 할 수 없습니다. 지금까지 내가 사용할 수 있었던 유일한 방법은 stage.addChild(active_area); (예를 들어)을 수행하는 것이지만 매우 다른 이름의 많은 동영상 클립이 있으므로이 방법이 올바르지 않은 것처럼 보입니다.이미 문서 클래스의 무대에있는 MovieClip 인스턴스에 액세스 하시겠습니까?

내 무비 클립이 단계의 아이들이없는 것을 발견했지만, 때 for 루프 stage.getChildAt(i);을 통해 같은 사실 MainTimeline에, 단 하나의 아이, root1는 밖으로 추적한다.

문서 클래스의 타임 라인에서 스테이지에 배치 된 무비 클립에 무비에 직접 추가 할 필요없이 무비 클립에 어떻게 액세스 할 수 있습니까?

[편집]


그래서 내 문제는 내가 내가 무비 클립 '값을 수정되지 않았 음을했다, 영화 클립에 액세스 할 수없는 것처럼 보이는, 그래서 년후 변경 사항을 등록하지 않아야합니다. I가 고정 후 여기

코드이다

function manage_cursor(e:Event):void { 
     prevX=currX; 
     prevY=currY; 
     currX=stage.mouseX; 
     currY=stage.mouseY; 
     var i:int; 

     if (currY > (stage.stageHeight/2)) { 

      for (i = 0; i < this.numChildren; i++) { 
       if (this.getChildAt(i).name!="active_area" && stage_kelp.y > kelp.min_y_mod) { 
        this.getChildAt(i).y-=1;      
       } 
      } 
     } 
     if (currY < (stage.stageHeight/2)) { 
      for (i = 0; i < this.numChildren; i++) { 
       if (this.getChildAt(i).name!="active_area" && this.stage_kelp.y < kelp.max_y_mod) { 
        this.getChildAt(i).y+=1; 
       } 
      } 
     } 

    } 

문제가 stage.getChildAt(i) 전에 I를 사용 stage.numChildren; 의하면, 타임 라인이었다 그 아이를 수정 이였다. 이로 인해 무대에서 다른 모든 무비 클립의 효과가 나타났습니다. 그래서 나는 y 값이 변경되었다는 가정하에 있었지만, 그렇지 않았습니다. 따라서 조건에 맞는 트리거가 없었기 때문에 내가 생각한 환상을 들려주지 못했습니다. MovieClips에 액세스 할 수 없습니다. 아래 답변에서 패키지에서 권장하는대로 stagethis으로 변경하면 문제가 해결되었습니다.

답변

3

Document Class에서이 코드를보십시오 :

trace(this["movieclip_name"]); 

thisDocument ClassMainTimeline을 의미합니다.

3

ActionScript 용 MovieClip을 내보내고 식별자를 부여 받았습니까? 일반적으로 식별자를 사용하여 MovieClip에 액세스 할 수 있습니다.

+0

그의 대답이 내 문제를 해결했기 때문에 답을 주었지만, 일단 stage.numChildren (i) 대신'this.numChildren (i)'을 반복하기 시작 했더니 응답이 효과가 있었기 때문에 나는 당신을지지했다. . – BumbleShrimp

+0

걱정할 필요가 없습니다! 행운을 빌어 요, 죄송합니다. 이전에 질문을 upvote하는 것을 잊어 버렸습니다. –