0

我在遊戲中執行SharedObject時遇到問題。如何在AS3中使用SharedObject和兩個Document類?

我的主要文檔類Engine和一個單獨的類叫做mcEndGameScreen,並在這個類中鏈接到我的Flash CS6文檔。

在我的Flash文檔中,有兩個實例名稱爲finalScorebestScore的文本字段。

我想要完成的是保存並加載玩家在遊戲結束時獲得的最終當前得分以及總體最佳得分。我希望這些值在我的mcEndGameScreen上顯示。

我如何更新並跟蹤遊戲中顯示的高分數?

高分在我的引擎類,像這樣:

//Text Fields 
public var highScoreText:TextField; 
public var nScore:Number; 

在我的引擎功能:

//Add Text fields to stage 
stage.addChild(highScoreText); 

//Add score to text field 
nScore = 0; 
updateHighScore(); 

然後高分功能:

public function updateHighScore():void 
{ 
    highScoreText.text = "High Score: " + nScore; 
} 

現在,我將如何去關於共享分數並將其顯示在我的mcEndGameScreen上?此外,在我的引擎我引用的屏幕,像這樣:

public var menuEnd:mcEndGameScreen; 

然後,我只是叫孩子當遊戲結束加載了。

但我想在我的引擎類做這樣的事情可能的:

public var _sharedObject:SharedObject; 

然後在我的引擎構造函數:

_sharedObject = SharedObject.getLocal("myGame"); 

但說實話也不太清楚以後做什麼?或者如何在我的主引擎類中使用public var finalScore:TextFieldpublic var bestScore:TextField。因爲它們與我的mcEndGameScreen相關聯。

任何幫助將不勝感激。謝謝。

回答

1

如果你想高分傳遞給mcEndGameScreen類,然後添加新的變種和新二傳功能,像這樣:在Engine類現在

private var _highScore:String; 

public function set highScore(value:String):():Void { 
    _highScore = value; 
} 

設置它像這樣:

menuEnd.highScore = String(nScore); 

要存儲高分在SharedObject確實如此:

_sharedObject = SharedObject.getLocal("myGame"); 
_sharedObject.highScore = nScore; 
_sharedObject.flush(); //Write to shared object 

要acc ESS highScore存儲在SharedObject像這樣:

menuEnd.highScore = _sharedObject.data.highScore; 
+0

好了,所以我在我mcEndGameScreen類中添加一套排行榜功能,那麼我可以訪問的高分,並與我的FLA我finalScore和bestScore文本字段使用它們?我將如何將我的highScore通過我的mcEndGameScreen類中的finalScore和bestScore文本字段?只是有點困惑。但是,謝謝你的信息。它幫助了很多 – Nathan

+0

當我嘗試使用menuEnd.highScore = nScore時出現此錯誤;將Number類型的值隱式強制爲不相關的String類型。 – Nathan

+0

這是類型轉換(數字作爲字符串)。我已經更新了答案。 –

相關問題