2013-11-01 115 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); 
    } 
}