[英]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.