2015-10-02 37 views
1

我想在AS中使用Flash中的一個小型氣體計算器,但即使在文本框內輸入任何內容之前,我仍在文本字段中收到錯誤「NaN」。任何想法的問題是?提前謝謝了。這裏是我的ActionScript代碼:在Adobe Flash中獲得NaN(不是數字)

km_txt.restrict = ".0-9"; 
liter_txt.restrict = ".0-9"; 
priceliter_txt.restrict = ".0-9"; 
stage.addEventListener(Event.ENTER_FRAME, calculate); 

     function calculate(param1:Event) 
     { 
      if (liter_txt.text != "" && km_txt.text != "") 
      { 
       usage_txt.text = String(100 * Number(liter_txt.text)/Number(km_txt.text)); 
      } 

      if (liter_txt.text != "" && km_txt.text != "" && priceliter_txt.text != "") 
      { 
       cost_txt.text = String(Number(liter_txt.text)/Number(km_txt.text) * Number(priceliter_txt.text)); 
      } 

      if (liter_txt.text != "" && priceliter_txt.text != "") 
      { 
       total_txt.text = String(Number(liter_txt.text) * Number(priceliter_txt.text)); 
      } 

     } 
+1

爲什麼你在這裏使用'ENTER_FRAME''事件'?如果文本字段中的'.text'屬性發生了變化,那麼只進行這些計算是有意義的。聆聽文本字段的更改! – null

回答

2

您鑄造從TextField對象數量幾次,但那些在這一點上不包含任何所以劇組決心楠:

String(100 * Number(liter_txt.text)/Number(km_txt.text)); 

現在嘗試將Number和NaN一起添加/相乘/分割仍然解析爲NaN。

您需要檢查值第一,可能設置爲0,如果你得到NaN的,在變量庫,使事情變得更加容易:

var value:Number = Number(liter_txt.text); 
if(isNaN(value)) 
{ 
    //this is not a number so substitute with 0? 
    value = 0; 
} 
0

確保你輸入TextField的初始文本值,因爲你正在檢查的價值 」」。在你的街區頂部寫下;

km_txt.text = ""; 
liter_txt.text = ""; 
priceliter_txt.text = ""; 

這將是一個更好的代碼,如果你聽TextEvent.TEXT_INPUT事件的文本字段和進行計算存在。

+0

我認爲你讓它工作? –