Как отобразить мувиклип, если общий объект равен числу AS3

Привет всем, так что я безуспешно пытался сделать так, как отобразить мой объект Movie Clip с именем achiev_10, когда nScore является числом, равным 10.

Вот что у меня есть в моих общих данных объекта.

В моем конструкторе у меня есть это:

//Initialize our shared object give it a path to save local data
        sharedObject = SharedObject.getLocal("GeometryBlast");

         if (sharedObject.data.highScore == null)
         {     
               // checks if there is save data
               trace("No saved data yet."); // if there isn't any data on the computer...
               sharedObject.data.highScore = nScore; // ...set the savedScore to 0
         } else 
         {
               trace("Save data found."); // if we did find data...
               loadData(); // ...load the data
         }

Затем в функции saveData(); у меня есть это:

public function saveData():void
    {
        if (nScore > sharedObject.data.highScore )
        {
            sharedObject.data.highScore = nScore;

        }
        menuEnd.bestScore.text = " " + sharedObject.data.highScore;
        sharedObject.flush();
        //trace("Data Saved!");
        //sharedObject.clear();

        if (nScore == 10)
        {
            achiev_10 = new Achievment_10();
            menuEnd.addChild(achiev_10);
            achiev_10.x = stage.stageWidth / 2;
            achiev_10.y = stage.stageHeight / 2;
            sharedObject.flush();
        }

    }

Теперь в настоящее время в if (nScore == 10), где я добавляю Move Clip, он работает и отображается. Но когда я возвращаюсь, чтобы проверить достижение Move Clip, оно исчезает. Я действительно не знаю, что мне нужно сделать, чтобы сохранить данные, если сохранение data.highscore равно 10, то всегда отображать это достижение.

Я также пробовал это, но ничего:

 if (sharedObject.data.highScore == 10)
    {
        achiev_10 = new Achievment_10();
        menuEnd.addChild(achiev_10);
        achiev_10.x = stage.stageWidth / 2;
        achiev_10.y = stage.stageHeight / 2;
        sharedObject.flush();
    }

пожалуйста помогите спасибо!


person Nathan    schedule 10.03.2014    source источник


Ответы (1)


Вам понадобится несколько функций для работы с SharedObject. Но вы должны знать, что пользователь может удалить значения из SharedObject, и достижения будут потеряны.

private function getScore(key:String, domain:String):* {
    try {
        var so:SharedObject = SharedObject.getLocal(domain);
        var data:Object = so.data;

        if (key in data) {
            return data[key];
        } else {
            trace(key + " doesn't present in SharedObject");
        }

    } catch (e:*) {
        trace("Oops, something goes wrong…");
    }
}

private function saveScore(value:*, key:String, domain:String):void {
    try {
        var so:SharedObject = SharedObject.getLocal(domain);
        so.data[key] = value;
        so.flush();
    } catch (e:*) {
        trace("Oops, something goes wrong…");
    }
}

Теперь вы можете работать с баллами:

var domain:String = "GeometryBlast";
var scoreKey:String = "ScoreKey";
const newcomer: int = 10;

//Getting scores
var myScore: Number = getScore(scoreKey, domain);

//Simple example how you could manage score values
if(!isNaN(myScore)){
    //Check achievements

    if(myScore >= newcomer){
        //Add 'Newcomer' achievement to the screen
    }
}

//Saving scores
var someScores:Number = 10;
saveScore(someScores, scoreKey, domain);
person Nicolas Siver    schedule 10.03.2014