2016-04-27 2 views
0

Хорошо, поэтому я пытаюсь создать мобильную флеш-игру (я в основном аниматор, рассказчик), и у меня есть проблема с введенным текстом для имени игрока. Я часто читаю полезные советы на этом сайте, поэтому я подписался, чтобы получить помощь. Код, который я использую для загрузки и сохранения данных, - saveDataObject, но насколько я знаю, вводный текст должен использоваться с кодом пакета. Я попытался преобразовать его в функцию var, но затем эти ошибки возникают. Я не уверен, как использовать код класса пакета, и все, что я читал на нем, было запутанным. Я в значительной степени самоучкой за все, что знаю о коде, хотя учебники и форумы, поэтому, если это не объяснено каким-то образом, я могу понять, что я не смогу это сделать ...Неявное принуждение значения типа text.flash: TextField для несвязанного Int

Вот раздел кода if Я не ясно (линии ошибок отдельно):

var playerName:int; 

init(); // this line goes directly beneath the variables 

function f_1(init):void 
{ // call once to set everything up 

    saveDataObject = SharedObject.getLocal("DataBattle/character/name"); // give the save data a location 

-

playerName = txtPlayer; 

-

function addName(e:TouchEvent):void 
    { 

     var myTextBox1:TextField = new TextField(); 
     var txtPlayer:TextField = new TextField(); 
     var myText:String = "Cyan"; 

     function CaptureUserInput() 
     { 
      captureText(); 
     } 

     function captureText():void 
     { 
      myTextBox1.type = TextFieldType.INPUT; 
      myTextBox1.background = true; 
      addChild(myTextBox1); 
      myTextBox1.text = myText; 
      myTextBox1.addEventListener(TextEvent.TEXT_INPUT, textInputCapture); 
     } 

     function textInputCapture(event:TextEvent):void 
     { 
      var str:String = myTextBox1.text; 
      createOutputBox(str); 
     } 

     function createOutputBox(str:String):void 
     { 
      txtPlayer.background = false; 
      txtPlayer.x = 200; 
      addChild(txtPlayer); 
      txtPlayer.text = str; 
     } 

-

 if(saveDataObject.data.characterName = playerName == null) 

-

 { // checks if there is save data 
      trace("No Player data yet."); // if there isn't any data on the computer... 
      saveDataObject.data.characterName = playerName; // ...set the savedScore to 0 
     } 
     else 
     { 
      trace("Player data found."); // if we did find data... 
      loadData1(); // ...load the data 
     } 

     function loadData1():void 
     { 
      playerName = saveDataObject.data.characterName; // set the current score to the saved score 
      trace("Data Loaded!"); 
     } 
    } 
} 

function saveData(e:TouchEvent):void 
{ 
    saveDataObject.data.characterName = playerName; // set the saved score to the current score 
    trace("Data Saved!"); 
    saveDataObject.flush(); // immediately save to the local drive 
    trace(saveDataObject.size); // this will show the size of the save file, in bytes 
} 

ответ

0

Было бы неплохо иметь некоторые подробности об этой ошибке. Как эта строка на самом деле бросает эту ошибку.

Однако даже без него есть несколько вещей, которые выглядят странно сразу.

var playerName:int; 
// And few lines below 
playerName = txtPlayer; 
// Few more lines below 
var txtPlayer:TextField = new TextField(); 

Похоже, вы объявляя playerName в междунар так что вы хотите сохранить числовые значения, но затем txtPlayer является TextField. Итак, по playerName = txtPlayer; вы пытаетесь сохранить TextField как значение Int, которое не сработает.

Я также могу видеть

if(saveDataObject.data.characterName = playerName == null) 

и это как: O Я даже не знаю, как эта часть составляется. Вы хотите сделать playerName == null check (который вернет true/false), а затем назначьте его saveDataObject.data.characterName?

+0

Хорошо, вы просто увеличили масштаб с точностью до двух строк, вызывающих ошибки, после чего я отредактирую вопрос, чтобы это стало ясно. Спасибо, но теперь у меня есть следующий вопрос или два. playerName был сделан из модифицированного кода кода сохранения баллов, поэтому имеет смысл, что его набор для чисел. Какая версия этого кода позволит мне сохранить playerName в качестве отображаемого значения из дочернего вывода txtPlayer? И я не совсем уверен, что нужно поставить присваивание saveDataObject.data.characterName в playerName. –

+0

Хорошо, так что ** В первую очередь ** Я бы начал с переименования переменных, потому что сейчас это запутывает. Когда я вижу 'playerName', я ожидаю, что это будет ... ... имя игрока? Поэтому, если это будет оценка, я рекомендую назвать его 'playerScore', и теперь ясно, что это такое и почему это Int. ** 2nd ** remove 'playerName = txtPlayer; '. Я не уверен, что он там делает, но вы все равно настраиваете его в функции loadData1() ', правильно? – 3vilguy

+0

'playerName' предназначен для имени игрока. Но я копирую код с кодами и модифицировал его, пытаясь сделать его кодом имени. Я буду перемещать 'playerName = txtPlayer;' to 'loadData1() «Мне нужно настроить имя игрока как функцию имени, я думаю, я не был таким ясным ...Извините, я делаю гораздо лучше лично, вот почему я обычно читаю сообщения других людей, но я не мог найти то, что мне было нужно ... –

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