簡體   English   中英

如何使用 AS3 在 Flash CS5 中刪除/重新加載影片剪輯/圖形

[英]How to remove/reload movieclip/graphic in Flash CS5 with AS3

我有一個setupBoard(); 和一個setupBlocks(); 在我的功能中:

function init(e)
{
    setupBoard();
    removeEventListener(Event.ENTER_FRAME , init);
    setupCat();
    setupBlocks();
}

function setupBoard()
{
    
    var columns:Array = new Array();
    var i,j:int;
    var _place:place;

    for (i = 0; i < 11; i++)
    {
        columns = [];
        for (j = 0; j < 11; j++)
        {
            _place = new place();
            _place.thisX=i;
            _place.thisY=j;
            _place.thisDistance=Math.min(i+1,j+1,11-i,11-j)*11;
            _place.y = 56 * i + 3;
            _place.x = 5 + 71 * j + 35*(i%2);
            _place.buttonMode=true;
            _place.addEventListener(MouseEvent.CLICK, setBlock);
            columns[j] = _place;
            // SÆTTER TAL PÅ BRIKKERNE
            _place.thisText.text = _place.thisDistance + " - " + _place.thisX + " : " + _place.thisY;
            addChild(_place);
        }
        rows[i] = columns;
    }
}

“地方”是電影剪輯

此功能會在游戲啟動和游戲完成/完成時加載..

setupBoard、set up board ofc 和 setupBlocks 設置一些影片剪輯,其中包含一些圖形。

這是我的問題,當游戲再次進入該功能時,如何刪除/重新加載所有塊? 目前,它們只是相互疊加,我一點也不喜歡。

如果我理解正確,您想要做的是在第二次運行 setup 時刪除所有先前的塊(從上次運行 setup 函數開始)。

為此,您應該創建一個函數來循環您的行和列數組,並且對於它找到的每個 Place 對象,它會執行以下操作:將其從舞台上移除,移除所有事件偵聽器,最后將其設置為 null。 你的函數可能看起來像這樣(你會在再次調用 setup 之前調用它):

for (i = 0; i < rows.length; i++)
{
   var column:Array = rows[i];

   for (j = 0; j < column.length; j++)
   {
      var place:Place = column[j];
      if (contains(place))
      {
         removeChild(place);
      }
      place.removeEventListener(MouseEvent.CLICK, setBlock);
      place = null;
   }
   column = [];
}
row = [];

我只是直接把它寫進了盒子里,所以它沒有經過測試。 但基本上它完成了從視圖中移除這些對象所必需的三件事,並清除了任何會阻止它們被垃圾收集器從內存中釋放的東西。

希望有幫助。

得不

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM