如何随机地在阵列中命中测试对象而不是按顺序。

时间:2015-08-12 06:37:46

标签: arrays actionscript-3

大家好,所以我有电影剪辑,放在图书馆的舞台上。我给它们所有实例名称并将它们添加到一个数组中,如下所示:

       //Initiate arrays
        aZebraArray = [startScreen.zebra_Front, startScreen.zebra_Middle, startScreen.zebra_Back];

然后在我的Enter_Frame函数中添加此代码以循环遍历数组并检查Hit test IF语句,如下所示:

private function Round_1Controls():void 
    {
        for (var i:int = 0; i < aZebraArray.length; i++)
        {
            trace(aZebraArray.length);
            var currentZebra = aZebraArray[i];

            if (crosshair.bullet.hitTestObject(currentZebra) && shotGun)
            {
                trace("HIT");

                aZebraArray.splice(i, 1);
                currentZebra.alpha = 0.2
                shotGun = false;
            }else
            {
                shotGun = false;
            }
        }
    }

现在这个工作正常,但我遇到的唯一问题是我必须在数组中命中Test第一个Object。所以我必须按照它们的位置按顺序测试数组中的对象。我无法随机拍摄它们。如果我先不打zebra_Front那么我就不能打其他任何一个了。

有没有办法可以随机拍摄阵列中的任何物体而不是按顺序拍摄?

2 个答案:

答案 0 :(得分:1)

您需要修复逻辑。你的代码说“即使你没有击中第一只斑马,也不能击中任何其他斑马”。在检查完所有斑马后,删除else { shotgun=false; }并仅将shotgun设置为false。

private function Round_1Controls():void 
{
    for (var i:int = 0; i < aZebraArray.length; i++)
    {
        trace(aZebraArray.length);
        var currentZebra = aZebraArray[i];

        if (crosshair.bullet.hitTestObject(currentZebra) && shotGun)
        {
            trace("HIT");

            aZebraArray.splice(i, 1);
            currentZebra.alpha = 0.2
            shotGun = false;
        } // else check next zebra
    }
    shotGun = false; // we've made a shot, after all.
}

答案 1 :(得分:-1)

你已经采取了变量布尔&#34; shotGun&#34;并且在一次击中之后被取消并且如果条件你已经检查它是否为真,那么命中条件适用。当你击中枪时请确认这个变量。