嘿伙计们,所以我正在开发一个游戏,我有一个数组来跟踪我的 5 个由数组添加到舞台的电影剪辑。我也有一个播放器影片剪辑,因此播放器影片剪辑正在使用所有 5 个菱形影片剪辑进行命中测试,这些影片剪辑添加到舞台,如下所示:
private var nPoints:Number = 5;..........
public function addPointsToStage():void
{
for (var i = 0; i < nPoints; i++)
{
trace(aPointsArray.length);
points = new mcGainPoints();
stage.addChild(points);
points.x = startPoint.x + (xSpacing * i);
points.y = startPoint.y - (ySpacing * i);
aPointsArray.push(points);
}
}
现在,当播放器接触到所有 5 个影片剪辑时,一切正常,数组的输出如下所示:
0 1 2 3 4
然后它继续到下一个级别。
但是假设我的播放器没有击中 5 个电影剪辑中的任何一个或只击中其中几个,当下一个级别开始时,输出如下所示:5 6 7 8 9
当下一个级别开始时,奇怪的事情开始发生,比如分数开始自行添加到高分中。
我认为问题在于我没有正确销毁包含 5 个影片剪辑的数组,这是我用来启动下一个级别并销毁数组的代码:
if(player.hitTestObject(mcGoal_1))
{
//Remove all points from array/stage
for (var i:int = 0; i < aPointsArray.length; i++)
{
if (aPointsArray[i].parent)
{
parent.removeChild(aPointsArray[i]);
}
startNextLevel();
}
mcGoal_1 是游戏的对象,因此如果玩家击中了goal_1,则销毁屏幕上的所有数组对象并开始下一个关卡。这是 startnextlevel 函数。
private function startNextLevel():void
{
//add points to next stage
addPointsToStage();
}
那么你能明白为什么当下一级开始时数组没有重置回 01234 吗?我认为这就是为什么游戏有随机加分的错误。请任何帮助将不胜感激