switch(變數或運算式){ case 數值1: 陳述句1; break; case 數值2: 陳述句2; break; case 數值3: 陳述句3; break; default: 陳述句4; }
為什麼switch裡面是個變數或運算式,而不是條件式?>( ゚ω゚ s)
(k ゚∀゚)<這是好問題,if和switch其中一個不同之處是,if是利用條件式傳回來的值,即是true或false,從而是否執行下一句陳述句,而switch則是取得變數的值後,再跟下列的case的數值作比對,當兩者的值是相同的話,就會跳到這個位置並執行之後的陳述句,直到遇到break後才離開switch。
如果找不到相同的數值會怎麼樣?>( ゚ω゚ s)
(k ゚∀゚)<當沒有任何數值是符合的話,程式會跳到default並執行之後的陳述句,但default是可以省略的,如果沒有default的話,程式會跳出switch的範圍。
(k ゚∀゚)<還有留意一下case最後是冒號,並不是分號。
(k ゚∀゚)<先看看以下的範例。
var choice=System.inputString("","請輸入您的選擇(A,B,C或D)",""); switch(choice){ case "A": System.inform("答案錯誤"); break; case "B": System.inform("答案錯誤"); break; case "C": System.inform("答案正確"); break; case "D": System.inform("答案錯誤"); break; default: System.inform("輸入的值不正確"); }
(k ゚∀゚)<當我們輸入"A"、"B"、"C"或"D"時,吉里吉里會比對每個case的值,當兩者的值是相同的話,就會執行之後的陳述句,若果輸入其他的值,如"N"、"a"或12等,由於吉里吉里找不到任何符合的值,它就會執行default之後的陳述句。
原來如此!>( ゚ω゚ s)
話說回來,你說如果case的值符合的話,就會執行之後的陳述句,直到遇到break後才離開switch,那麼我不寫break的話會發生什麼事?>( ゚ω゚ s)
(k ゚∀゚)<嗯,由於沒遇到break,吉里吉里會繼續執行以下的陳述句,看看以下的範例。
var choice=2; switch(choice){ case 1: System.inform("陳述句1"); case 2: System.inform("陳述句2"); case 3: System.inform("陳述句3"); case 4: System.inform("陳述句4"); }
(k ゚∀゚)<若果執行以上的範例,我們將會看到什麼?
顯示"陳述句2"?>( ゚ω゚ s)
(k ゚∀゚)<除了顯示"陳述句2"之外,由於沒有break,所以還會顯示"陳述句3"和"陳述句4"。
(k ゚∀゚)<這是新手有時會犯錯的地方,因忘記放上break,所以出現一些非預期的結果,但有時候亦可以利用這特性來處理某些情況,看看以下的範例。
var month=System.inputString("","請輸入月份",""); var day; switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: day=31; break; case 4: case 6: case 9: case 11: day=30; break; case 2: day=28; break; } System.inform(month+"月的日數是"+day);
(k ゚∀゚)<在上述的範例裡,當月份是1、3、5、7、8、10、12時,就會把day指定為31,當月份是4、6、9、11時,就會把day指定為30,當月份是2時,就會把day指定為28。
(k ゚∀゚)<適當地使用switch可以增加可讀性,令程式容易理解和管理,不過switch無法處理一些複雜的情況,或者是進行小於或大於等比較,這時就需要使用到if。
(k ゚∀゚)<今次就介紹到這裡吧,下次再見。
你好
回覆刪除抱歉打擾一下
我想問如果我想角色用特效(Wave等等}
如何不影響到背景
每次用Wave的時候
人物背影等等都會一起動
還有人物轉換動作時
怎樣才會不變得'生硬'?
感謝
還有如何只令人物震盪(quake)
刪除之前曾經我提及過[trans]有layer這個屬性,
刪除這可以切換指定的圖層,
但使用起來是十分困難,
因為切換時有可能會有非預期的效果。
而quake只能對畫面進行搖晃而並非針對圖層,
所以無法指定某圖層進行搖晃的。
謝謝回答
刪除那人物表情轉換
更自然
(就是不要舜間轉掉,有0.幾秒的時間緩衝)
因為人物突然跳出來這點和表情動作轉太快
影響了觀感
基本上用[trans]來切換就可以控制切換時間和效果,
刪除令人物轉換時不會太突然。