2016-04-27 43 views
0

好吧,所以我試圖創建一個手機Flash遊戲(我主要是一個動畫師,一個講故事的人),我有與玩家名稱的輸入文字有關。我經常在這個網站上閱讀有用的提示,所以我註冊了一些幫助。我用來加載和保存數據的代碼是saveDataObject,但據我所知,輸入文本必須與包代碼一起使用。我試圖將其轉換爲函數var,但隨後出現這些錯誤。我不確定如何使用Package類代碼,並且我讀過的所有內容都令人困惑。我非常自我教導我所知道的關於代碼的一切,但教程和論壇,所以如果它沒有以一種方式解釋我可以理解我不會做到這一點...隱式強制的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爲INT所以你要存儲的數值,但隨後txtPlayer是一個TextField。所以通過playerName = txtPlayer;你試圖存儲TextField作爲Int值,這是不會工作。

我還可以看到

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

,它就像:o 我甚至不能確定這部分是如何被編譯。你想做playerName == null檢查(這將返回true/false),然後將其分配給saveDataObject.data.characterName?

+0

好的,您剛剛放大了導致錯誤的確切兩行,我將在此之後編輯問題以說明問題。謝謝,但現在我有一個或兩個後續問題。 playerName是由保存代碼的修改後的代碼構成的,因此它對數字的設置很有意義。這個代碼的版本是什麼讓我將playerName存儲爲子輸出txtPlayer的顯示值?我並不完全確定將saveDataObject.data.characterName賦值給playerName。 –

+0

好的,所以**首先**我會開始重命名變量,因爲它現在非常混亂。當我看到'playerName'時,我希望它是......呃......球員名字?所以如果這應該是一個分數,我推薦給它命名'playerScore',現在清楚它是什麼以及爲什麼它是一個Int。 **第二**刪除'playerName = txtPlayer; '。我不確定它在做什麼,但是你可以在'loadData1()'函數中設置它,對嗎? – 3vilguy

+0

'playerName'是爲了玩家的名字,但是我複製了一個分數代碼並修改了它,試圖使它成爲一個名字代碼。我將移動'playerName = txtPlayer;'到'loadData1()'我需要能夠設置播放器名稱作爲名稱函數,我想我並不那麼清楚...對不起,我親自做得更好,這就是爲什麼我通常閱讀其他人的帖子,但我找不到我需要的... –

相關問題