所以我有一个3x3的文本字段网格,它的目的是显示3个最好的分数以及自游戏启动以来已经达到的单圈时间和carHealths,如果比当前排行榜中的一个分数更好的分数,那么新的分数,单圈时间和carHealth将替换旧的分数,并将其下方的所有内容向下移动一个。
问题是,它只替换最高分,即使它是一个更糟糕的分数,如果只是保持其他两个位置不变。我是不是漏掉了什么很明显的东西,或者我做错了什么?
function leaderBoard(): void
{
if (score < scoreArray[2])
{
return
}
if (score > scoreArray[0])
{
scoreArray.unshift(score);
lapTimerArray.unshift(lapTimer.currentCount);
carHealthArray.unshift(carHealth);
scoreArray.pop()
lapTimerArray.pop()
carHealthArray.pop()
}
else if (score > scoreArray[1])
{
scoreArray.splice(1, 0, score);
lapTimerArray.splice(1, 0, lapTimer.currentCount);
carHealthArray.splice(1, 0, carHealth);
scoreArray.pop();
lapTimerArray.pop();
carHealthArray.pop();
}
else if (score > scoreArray[2])
{
scoreArray.pop();
lapTimerArray.pop();
carHealthArray.pop();
scoreArray.append(score);
lapTimerArray.append(lapTimer.currentCount);
carHealthArray.append(carHealth);
}
}
发布于 2017-08-31 20:54:20
哦,天哪:)如果你突然想要显示前10名的分数,你该怎么办?
这种方法怎么样:将汽车的所有信息存储在一个对象(或类)中,然后按分数对数组进行排序。这样你就不必处理三个独立的数组了(也许你以后会想要给你的汽车添加更多的属性):
var car1:Object = {name:"Car 1", score:100, lapTimer:100, carhealth:50};
var car2:Object = {name:"Car 2", score:1050, lapTimer:100, carhealth:50};
var car3:Object = {name:"Car 3", score:700, lapTimer:100, carhealth:50};
var myCars:Array = [car1, car2, car3];
// Then you probably want to pass your car objects to your cars and modify them from there: car3.score = 400 etc. The car objects can be created dynamically based on how many cars you want
// In the end
function displayScores():void
{
myCars.sortOn("score"); // sort cars on score property
// display top 3
for(i:int = 0, i < 3; i++)
{
trace("Place " + (i+1) + " - " + myCars[i].name + ", Score " + myCars[i].score);
}
}
https://stackoverflow.com/questions/45974251
复制相似问题