随机删除一个数组

时间:2011-05-09 08:58:59

标签: arrays actionscript-3 random sprite

仅供记录,我正在使用AS3。

我有一个问题,我想在AS3中随机删除一个精灵,我已经设法弄清楚如何创建精灵,使它们填充为网格,只是为了我的生活,我无法弄清楚如何删除它们!

这是我用来创建它们的代码:

function showpixels() : void
{   

    for (var i:int = 0; i < 40; i++)
    {
        for (var j:int = 0; j < 40; j++)
        {
            var s:Sprite = new Sprite();
            s.graphics.beginFill(0);
            s.graphics.drawRect(i*10, j*10, 10, 10);
            s.graphics.endFill();
            addChild(s);
            pixels.push(s);
        }
    }
}

基本上我需要随机删除这些内容,直到可以看到下面的内容。

任何帮助都会很好,我对此很新!谢谢!

2 个答案:

答案 0 :(得分:1)

function removeRandom():void
{
    var rand:uint = Math.random()*pixels.length;

    var i:Sprite = Sprite(pixels[rand]);

    if(i.parent) i.parent.removeChild(i);
    pixels.splice(rand, 1);
}

更新:要随机删除你可以尝试这样的事情:

var _timer:int = 100;

addEventListener(Event.ENTER_FRAME, _handle);
function _handle(e:Event):void
{
    if(pixels.length > 0) _timer --;
    if(_timer < 1)
    {
        _timer = 10 + Math.random()*50;
        removeRandom();
    }
}

function removeRandom():void
{
    var rand:uint = Math.random()*pixels.length;

    var i:Sprite = Sprite(pixels[rand]);

    if(i.parent) i.parent.removeChild(i);
    pixels.splice(rand, 1);
}

答案 1 :(得分:1)

马蒂的想法很有效。另一种选择是首先对阵列进行洗牌,然后弹出元素。

随机播放Array使用pixels.sort(function (...args):int { return int(2*Math.random()-1) })

然后你可以像这样简单地删除它们:

function remove():void {
     if (pixels.length) removeChild(pixels.pop());
     else clearInterval(this.id);
}

并在showpixels的末尾添加此行:

this.id = setInterval(remove, 500);