flash 語法問題

錯誤:

string類型值以隱含方式強制轉換成不相關的類型Number

來源:

var myDate:Date = new Date () ;

var myHours:Number = myDate.getHours();

var myMinutes:Number = myDate.getMinutes();

var mySeconds:Number = myDate.getSeconds();

if (myHours<10){myHours = "0" + myHours;}

time_txt.text = myHours + ":" + myMinutes + ":" + mySeconds ;

中的

if (myHours<10){myHours = "0" + myHours;}

我不懂="=因為是抄書上的...

還是跟CS3 / CS4有關??

應該要怎麼改??

謝謝

2 個解答

評分
  • 1 0 年前
    最佳解答

    if (myHours<10){myHours = "0" + myHours;}

    這句話的問題

    你不是已經把

    var myHours:Number = myData.getHours( )

    我宣告(var) myHours是一個Number的型別

    然後把右邊這個同型別的東西指定給左邊

    等號(=)是指定的意思(就是把右邊運算出來的的值"指派"左邊)

    這樣解釋,那你應該知道為什麼

    myHours = "0" + myHours(不合邏輯)

    (Number)=(字串)+(Number)

    所以....怎麼半.....

    要自己再想一下嗎?

  • 1 0 年前

    你已經把 myHours 宣告成 Number (數值)

    當然不可能儲存字串

    你只要把第二行的 :Number 拿掉

    讓它變成 Object/Variant

    就不會有這個問題了

    2009-08-22 10:28:18 補充:

    補充烈夫的回答:

    一般而言,Flash在加兩個不同的型別時,會自動轉成可以相加的型別再加起來

    所以 String+Number 會把兩個都轉成 String 再加起來

    a = "3" + 2;

    trace(a);

    //output: 32

    2009-08-22 10:31:08 補充:

    但是

    b = 3+2;

    trace(b);

    //output: 5

還有問題?馬上發問,尋求解答。