如何在AS3中将SharedObject与两个Document类一起使用?

时间:2014-02-16 07:55:19

标签: actionscript-3 flashdevelop flash-cs6 shared-objects local-shared-object

我在游戏中实施SharedObject时遇到了问题。

我的主要文档类Engine和一个名为mcEndGameScreen的单独类,并且在此类中链接到我的Flash CS6文档。

在我的Flash文档中,有两个文本字段,实例名称为finalScorebestScore

我想要完成的是保存并加载玩家在游戏结束时获得的最终当前得分以及整体最佳得分。我希望在我的mcEndGameScreen上显示这些值。

我如何更新并跟踪用户播放时在游戏中显示的高分?

HighScore在我的Engine类中是这样的:

//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; 

然后我会在游戏结束时给孩子打电话加载。

但是我想在我的Engine类中做这样的事情:

public var _sharedObject:SharedObject;

然后在我的Engine构造函数中:

_sharedObject = SharedObject.getLocal("myGame");

但老实说不太确定在那之后该怎么办?或者如何将public var finalScore:TextFieldpublic var bestScore:TextField与我的主要Engine类一起使用。因为它们与我的mcEndGameScreen链接。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

如果你想将highScore传递给mcEndGameScreen类,那么添加新的var和new setter函数,如下所示:

private var _highScore:String;

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

现在在Engine类中设置如下:

menuEnd.highScore = String(nScore);

要在SharedObject中存储高分数,请执行以下操作:

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

要访问highScore中存储的SharedObject,请执行以下操作:

menuEnd.highScore = _sharedObject.data.highScore;