Как использовать 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;