Как использовать SharedObject с двумя классами Document в AS3?

У меня проблемы с реализацией SharedObject в моей игре.

Мой основной документ Engine и отдельный класс под названием mcEndGameScreen и в этом классе, который связан с моим документом Flash CS6.

В моем Flash-документе есть два текстовых поля с именем экземпляра finalScore а также bestScore,

Чего я хочу добиться, так это сохранить и загрузить окончательный текущий результат, который игрок получил в конце игры, и общий лучший результат. Я хочу, чтобы эти значения отображались на моем 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? Также в моем Engine я ссылаюсь на экран так:

public var menuEnd:mcEndGameScreen; 

Тогда я просто звоню ребенку, когда игра заканчивается, чтобы загрузить.

Но я думал о том, чтобы сделать что-то подобное в моем классе Engine, может быть:

public var _sharedObject:SharedObject;

Тогда в моей функции конструктора Engine:

_sharedObject = SharedObject.getLocal("myGame");

Но, честно говоря, не слишком уверен, что делать после этого? Или как использовать public var finalScore:TextField а также public var bestScore:TextField с моим основным классом двигателя. Так как они связаны с моим mcEndGameScreen.

Любая помощь будет оценена. Благодарю.

1 ответ

Если вы хотите передать highScore в mcEndGameScreen Затем добавьте новый класс var и новую функцию setter:

private var _highScore:String;

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

Сейчас в Engine Класс установить это так:

menuEnd.highScore = String(nScore);

Хранить highScore в SharedObject сделать так:

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

Чтобы получить доступ highScore Хранится в SharedObject вот так:

menuEnd.highScore = _sharedObject.data.highScore;
Другие вопросы по тегам