2012-07-14 93 views
0

我使用各種帶有movieClip按鈕的影片剪輯 - 所有的MC都通過代碼插入,舞臺上沒有任何東西。 每次按鈕的eventListener被觸發時,我會調用下一個函數,我將下一個movieClip添加到行中,然後我想刪除對之前使用過的MovieClip的引用。如何重新啓動flash as3動畫片段的引用?

更具體我寫了一個益智遊戲,每當我進入遊戲,移動其中一個片段並按下MovieClip後退按鈕,下一次我進入相同的遊戲時,我仍然看到我離開它的片段我想要movieClip重新啓動到原來的位置。 我在這裏做錯了什麼? 不介意變數,這裏的重點是當我重新點擊每個函數時,我重新開始引用他們當我開始遊戲時的情況? 謝謝。

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?是否它會刪除我的原始數據,比如原始位置? 當你有六個部分的謎題時,保存位置是好的,但是當你100時,它開始變得混亂。 我正在尋找一個通用的解決方案,將涵蓋任何數量的作品。 – yishai 2012-07-14 12:05:19

+0

是的,破壞對象清理它的位置。如果你想重用它們,你可以創建一個字典。 mc將是關鍵,並且是一個持有如下內容的對象:myDictionary [myMC] = {x:initXPos,y:initYPos}; – Drala 2012-07-14 14:22:35

+0

謝謝。 反正有沒有寫下每件地點恢復原始MC數據? 這個特定的MC包括7名兒童,6拼圖和整個畫面每一個與它自己的實例名稱,在這種情況下,這將是比較容易記下每一塊的位置,但一旦我去了大量碎片的書寫位置下來會是種問題。我正在尋找恢復原來的位置,一旦按下後退按鈕,而不使用位置的數組 – yishai 2012-07-14 15:16:37

相關問題