1

我正在制作一个游戏,用户将在游戏结束时查看他/她的高分和得分。这是播放器看到结果页面时的代码:

function showresults():void
{
var so:SharedObject = SharedObject.getLocal("alltimeHighScore");
if (so.data.score == undefined || score > so.data.score)
{
    endscreen_mc.scoreR_txt.text = String(score);
    endscreen_mc.highscore_txt.text = String(score);
}
if (score < so.data.score)
{
    endscreen_mc.scoreR_txt.text = String(score);
    endscreen_mc.highscore_txt.text = String(so.data.score);
}
so.data.score = score;
so.flush();
}

它有时会填充,有时不会。我也有类似代码的另一个级别:

function showresultsA():void
{
var so:SharedObject = SharedObject.getLocal("alltimeHighScore");
if (so.data.scoreA == undefined || scoreA > so.data.scoreA)
{
    endscreenA_mc.Ascore_txt.text = String(scoreA);
    endscreenA_mc.highscoreA_txt.text = String(scoreA);
}
if (scoreA < so.data.scoreA)
{
    endscreenA_mc.Ascore_txt.text = String(scoreA);
    endscreenA_mc.highscoreA_txt.text = String(so.data.scoreA);
}
so.data.scoreA = scoreA;
so.flush();
}
4

2 回答 2

0
  1. 我认为,Xiler是对的:你不考虑案例,当分数等于高分时。
  2. 第二个问题是您可能会在“if”条件之外填充“score”字段 - 您应该始终显示它。
  3. 您每次都在覆盖一个高分,即使它实际上并不大于当前的高分。

因此,请尝试像这样更改您的函数 showresults():

function showresults():void
{
   // display current score
   endscreen_mc.scoreR_txt.text = String(score);

   // calculate, display and save (if necessary) a new highscore
   var so:SharedObject = SharedObject.getLocal("alltimeHighScore");
   if (!so.data.score || score > so.data.score)
   {
       endscreen_mc.highscore_txt.text = String(score);
       so.data.score = score;
       so.flush();
   }
   else
   {
       endscreen_mc.highscore_txt.text = String(so.data.score);
   }
}
于 2013-11-01T22:37:58.427 回答
0

我注意到的一件事是,当 so.data.score 等于分数时,它们不是条件语句。

if(so.data.score==score){

}

如果在代码运行时这是真的,那么显然文本不会被更新。除此之外,由于您的代码示例很短,因此我无法提供另一个为什么它有时不会出现的原因。

于 2013-11-01T21:25:00.847 回答