2013-11-01 67 views
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(); 
} 

回答

0

一件事,我注意到的是,他们是在so.data.score等于得分没有条件语句。

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

} 

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

0
  1. 我认为,席勒是正确的:你没有考虑到的情况下,当分数等于chached高分。
  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); 
    } 
}