2012-07-14 1 views
0

무비 클립 버튼이있는 다양한 무비 클립을 사용합니다. 모든 MC는 코드를 통해 삽입되며 무대에 아무것도 없습니다. 버튼의 eventListener가 trigered 될 때마다 다음 줄을 다음 movieClip에 추가 한 다음 이전에 사용한 MovieClip에 대한 참조를 제거하려고합니다.플래시 as3 영화 클립 참조를 다시 시작하는 방법은 무엇입니까?

더 구체적으로 나는 퍼즐 게임을 작성하고 게임에 들어갈 때마다 조각 중 하나를 움직여서 MovieClip 뒤로 버튼을 누른다. 다음 번에 같은 게임에 입장한다. movieClip을 원래 위치로 다시 시작하겠습니다. 여기서 내가 뭘 잘못하고 있니? vars에 신경 쓰지 마시고 요점은 각 기능을 다시 클릭 할 때 게임을 시작했을 때의 참조를 다시 시작하는 방법입니다. 덕분에 .

public function start1() 
     { 

        //start screen 

      addChild(first1); 
      first1.start(button name).addEventListener(MouseEvent.CLICK, start); 

     } 


    public function back1(even:MouseEvent) 
{ 
removeChildAt(numChildren - 1); //want to remove who ever called back1 
start1(); 
} 

    public function start(even:MouseEvent) 
{ 
     /choosing num of pieces 

     removeChildAt(numChildren - 1); //want to remove first1 
     addChild(level); 
     level.back.addEventListener(MouseEvent.CLICK, back1); 
     level.sixpieces.addEventListener(MouseEvent.CLICK, sixLevel); 

} 
    //level choosing 
    public function sixLevel(even:MouseEvent) 
{ 
    removeChildAt(numChildren - 1); //want to remove level 
    addChild(clevel); 
     clevel.back.addEventListener(MouseEvent.CLICK, back1); 
     clevel.easy.addEventListener(MouseEvent.CLICK, function(){Slevel=1;six(even);}); 
     clevel.med.addEventListener(MouseEvent.CLICK, function(){Slevel=2;six(even);}); 
     clevel.hard.addEventListener(MouseEvent.CLICK, function(){Slevel=3;six(even);}); 


} 

//game itself 
    public function six(even:MouseEvent) 
{ 
    num=6; 
    row1=0; 
    row2=1; 
    row3=2; 
    row4=3; 

    removeChildAt(numChildren - 1); 
     addChild(full1); 

     if(Slevel==1) 
     { 
      full1.time1.visible=false; 
      full1.full.visible=true; 
     full1.frame1.visible=false; 

     } 
    else 
    if(Slevel==2) 
    { 
     full1.full.visible=false; 
      myTimer = new Timer(1000,60); 
    } 
    else 
    if(Slevel==3) 
    { 
      full1.full.visible=false; 
      myTimer = new Timer(1000,30); 
    } 
    if(Slevel!=1) 
    { 
     Slevel=4; 

    } 
    full1.back.addEventListener(MouseEvent.CLICK, back1); 
    for(a=0;a<6;a++) 
    { 
     this.locarrs[3][a].addEventListener(MouseEvent.MOUSE_DOWN, Move); 
     this.locarrs[3][a].addEventListener(MouseEvent.MOUSE_UP, stopMove); 
    } 

} 

답변

0

원래 위치를 저장하고 다시 클릭하면 다시 클릭 할 수 있습니다. 그렇지 않으면 매번 영화 클립을 만들고 삭제할 수 있습니다. 표시 목록에 다시 추가하는 것만으로는 그 위치가 mc 자체에 저장되기 때문에 충분하지 않습니다.

+0

감사합니다. 어떻게 movieClip을 파괴합니까? 원래 위치와 같은 모든 초기 데이터를 삭제하지 않을까요? 포지션을 저장하는 것은 6 가지 부분의 퍼즐이있을 때 좋지만 100을하면 혼란에 빠지기 시작합니다. 나는 어떤 양의 조각도 커버 할 수있는 일반적인 솔루션을 찾고있다. – yishai

+0

예, 개체의 위치를 ​​정리합니다. 다시 사용하려면 사전을 만들 수 있습니다. mc는 키이고 객체는 다음과 같이 콘텐츠의 위치를 ​​지정합니다. myDictionary [myMC] = {x : initXPos, y : initYPos}; 덕분에 – Drala

+0

. 어쨌든 각 조각 위치를 적어 두지 않고 원래의 mc 데이터를 복원 할 수 있습니까? 이 특정 mc에는 7 개의 children-6 퍼즐 조각이 포함되어 있으며 전체 그림은 각각 인스턴스 이름과 같습니다.이 경우에는 각 조각 위치를 적어두기가 쉽지만 한 번 많은 위치에 조각을 작성하면됩니다. 문제가된다. 다시 버튼을 누르면 위치의 배열을 사용하지 않고 조각 원래 위치를 복원하려고합니다 – yishai

관련 문제