2014-03-10 5 views
0

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

Вот что я до сих пор использовал в своих данных об общих объектах.

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

//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, он исчезает. Я действительно не знаю, что мне нужно сделать, чтобы сохранить данные, если сохранить 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(); 
    } 

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

ответ

0

Для работы с 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); 
+0

Благодарим Вас за это! – Nathan

 Смежные вопросы

  • Нет связанных вопросов^_^