大家好,所以我有电影剪辑,放在图书馆的舞台上。我给它们所有实例名称并将它们添加到一个数组中,如下所示:
//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那么我就不能打其他任何一个了。
有没有办法可以随机拍摄阵列中的任何物体而不是按顺序拍摄?
答案 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;并且在一次击中之后被取消并且如果条件你已经检查它是否为真,那么命中条件适用。当你击中枪时请确认这个变量。