Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何使用AS3在Flash CS5中删除/重新加载movieclip/graphic_Actionscript 3_Function_Flash Cs5_Reload_Movieclip - Fatal编程技术网

Actionscript 3 如何使用AS3在Flash CS5中删除/重新加载movieclip/graphic

Actionscript 3 如何使用AS3在Flash CS5中删除/重新加载movieclip/graphic,actionscript-3,function,flash-cs5,reload,movieclip,Actionscript 3,Function,Flash Cs5,Reload,Movieclip,我有一个setupBoard()和asetupBlocks()在我的函数中: function init(e) { setupBoard(); removeEventListener(Event.ENTER_FRAME , init); setupCat(); setupBlocks(); } function setupBoard() { var columns:Array = new Array(); var i,j:int;

我有一个
setupBoard()和a
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;
    }
}
函数初始化(e)
{
设置板();
removeEventListener(Event.ENTER_FRAME,init);
setupCat();
setupBlocks();
}
功能设置板()
{
变量列:数组=新数组();
变量i,j:int;
var_地点:地点;
对于(i=0;i<11;i++)
{
列=[];
对于(j=0;j<11;j++)
{
_地点=新地点();
_地点:thisX=i;
_地点:thisY=j;
_place.thisDistance=数学最小值(i+1,j+1,11-i,11-j)*11;
_位置y=56*i+3;
_位置x=5+71*j+35*(i%2);
_place.buttonMode=true;
_place.addEventListener(MouseEvent.CLICK,setBlock);
列[j]=\u处;
//SÆTTER TAL PÅBRIKKERNE
_place.thisText.text=\u place.thisDistance+“-”+\u place.thisX+“:“+\u place.thisY;
addChild(_place);
}
行[i]=列;
}
}
这个“地方”就是电影唇

此功能在游戏启动和游戏结束/完成时加载

setupBoard、setupBoard ofc和setupBlocks设置一些movieclips,其中包含一些图形

我的问题是,当游戏再次进入该功能时,我如何移除/重新加载所有块?
目前,它们只是相互重叠,我一点也不喜欢。

如果我理解正确,您要做的是在第二次运行安装程序时删除所有以前的块(上次运行安装函数时)

为此,您应该创建一个函数来循环您的行和列数组,对于它找到的每个Place对象,它执行以下操作:从stage中删除它,删除所有事件侦听器,最后将其设置为null。您的函数可能如下所示(您可以在再次调用setup之前调用它):

for(i=0;i
我只是直接写在盒子里,所以没有测试。但基本上,它做了三件必要的事情来从视图中删除这些对象,并清除任何可能阻止它们被垃圾收集器从内存中释放的内容

希望有帮助


Debu

显示设置板功能的代码我已在第一个功能下添加了代码。谢谢,伙计!我在一个名为removeBlocks2()的函数中插入了这段代码;然后在setupBoard函数中插入函数,就在下面我定义了3个变量。我只得到一个错误,那就是:“访问未定义的属性行”,我尝试了很多不同的事情,但似乎无法找到如何使其工作:/你知道问题出在哪里吗?啊,那是因为我错误地命名了你的'rows'变量,我使用了'row'。看起来您的“rows”数组是该类的一个属性,因此假设它的名称正确,您应该能够访问它。将我函数中的“row”改为“rows”,看看你得到了什么。天哪,它起作用了!!:D我已经试着这样做了三个星期了:p非常感谢,伙计!!
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 = [];