FLASH條件和迴圈語句

來源:互聯網
上載者:User
條件|迴圈|語句
  Actions cript 的條件和迴圈語句有 if, else, else if, for, while, do...while, for...in 和 switch. 在 Flash 中它們被叫做流程式控制制動作(Action), 但實際上, 其實質與其它程式語言沒什麼不一樣的.
因為條件和迴圈語句是程式語言中最基礎的, 也是最具有實用價值的語句, 所以要在這裡仔細講解一下. 對於有 C++ 和 Java 等編程經驗的讀者隨意瀏覽一下就可以了.
條件語if句--if
可以說是程式語言中最基本的條件判斷語句. 無論在任何語言中都有它的身影.
由下面的例子可以瞭解它的格式:
name = "SiC";
//下面是 if 語句
if(name == "SiC"){
trace("作者");
}
if 語句通過判斷其後圓括弧內的邏輯運算式是否為 true 來確定是否執行大括弧內的語句. 假如邏輯運算式 name == "SiC" 傳回值為真, 就在輸出視窗(Output Window)內顯示"作者", 否則就不執行.
然後讓我們設想一下下面例子的效果:
if(1){
trace("總是執行");
}
如果你還記得前面資料類型的內容, 那麼應該可以看出, 這時的 if 語句基本上是多餘的, 因為對於常量 1, 邏輯運算式的值恒為 true(其實 1 就是邏輯值 true 的數值表示形式). 但對於常量 0, 則永遠為 false. 你可以試試把上例中的 1 改成一個字串常量(例如 "hi!")看看會有什麼效果.
再看一個例子:
name = "SiC";
//下面是 if 語句
if(name = "SiC"){
trace("作者");
}
比較一下看這個例子與第一個例子有什麼不同? 不同之處就在於第一個用了 ==, 而這個用了 =. 對於這個例子, if 的判斷永遠為 true. 想想為什麼? 問題就在於使用了賦值運算子 = 而不是邏輯運算子 ==. 對於賦值運算, 其返回的邏輯值總是 true. 這也是初學者常犯的錯誤.
一定要注意區分賦值運算子 = 和邏輯運算子 ==. 否則你會遇到一些莫名其妙的錯誤和問題, 而且語法檢查也找不出錯誤(因為賦值運算運算式也是有效條件運算式). 所以請記住, Actions cript 的相等邏輯運算子是 == 而不是 =.
if...else
假如想要在判斷條件不成立時執行另一項操作時怎麼辦? 很簡單, 在 if 語句後面加上個 else 語句塊就可以了:
name = "未知";
//下面是 if...else 語句
if(name == "SiC"){
trace("作者");
} else {
trace("未知");
}
很簡單吧? 只要把在判斷結果為假時要執行的語句放在 else 後的大括弧裡就行了.
if...else if
如果要進行很多個條件判斷怎麼辦? 也好辦, 用 else if 解決:
name = "Sam";
//下面是 if...else if 語句
if(name == "SiC"){
trace("作者");
} else if(name == "Flash MX") {
trace("Flash MX 是軟體名稱.");
} else if(name != "未知") {
trace("誰是 " + name + "?");
} else {
trace("未知");
}
你可以接任意多個的 else if 來進行多個條件的判斷, 最後的 else 語句塊可有可無(根據實際需要選用). 唯一不足的就是 else if 太多時執行速度較慢(在其它程式語言中也是一大問題). 這時就輪到 switch 出場了
switch
switch
switch 在 Visual Basic 裡面是個很好用的命令. 它可以通過判斷不同的條件運算式來執行不同操作. 但是在 Actions cript 中就沒有那麼大的彈性了. 因為 Actions cript 中 switch 的條件被固定為 ===, 即絕對等於(包括資料類型也要相同), 不像在 VB 中可以額外使用 >, >= 之類的條件運算子. 所以, else if 在需要判斷大於小於之類的情況下還是大有用處的. 現在來看看下面的例子:
mynumber = 3; //賦值給 mynumber
//下面是 switch 語句
switch (mynumber) {
case 1:
trace ("這是我希望得到的數字.");
break;
case 2:
trace ("這個數字比我的小一點.");
break;
case 3:
trace ("這是我的數字.");
break;
default:
trace ("這不是我要的數字.")
}
上面的例子是一個完整的 switch 語句塊. 在 case 關鍵字後面的就是需要滿足的條件, 如果都不滿足, ActionScipt 會尋找是否存在 default 語句塊, 如果存在, 則執行其中的語句. 另外, 你可能已經發現在每個語句塊後都有一個 break 關鍵字, 為什麼呢? 因為如果沒有用 break 來跳出 switch 條件選擇語句, 程式會繼續向下搜尋滿足條件的 case 項目(包括 defualt 塊)並執行其中的語句. 下面是一個修改後的例子:
mynumber = 3; //賦值給 mynumber
//下面是沒有加 break 的 switch 語句
switch (mynumber) {
case 1:
trace ("這是我希望得到的數字.");
case 2:
trace ("這個數字比我的小一點.");
case 3:
trace ("這是我的數字.");
default:
trace ("這不是我要的數字.")
}
運行一下這個例子, 你會發現會同時輸出了 "這是我的數字" 和 "這不是我要的數字". 為什麼? 因為沒有了 break, 在運行了滿足條件的 case 3: 語句塊後, 條件選擇語句仍會繼續執行, 而 default 塊作為預設條件, 它總是會被執行, 從而產生了這樣的結果. 一些常見的程式錯誤也就由此而來.
在 Actions cript 中還有一個用於迴圈的 continue 命令, 它可以直接跳到所在迴圈的條件檢測部分(即立即進行下一次迴圈的條件判斷). 這個命令不常用到, 所以在這裡沒有講解. .
迴圈語句--for
迴圈語句
for
對於 for 迴圈, 我想大多數讀者都不會陌生. 下面是一個求 1 到 100 的自然數之和的程式段.
var sum = 0;
//下面是 for 迴圈
for (var i=1; i<=100; i++) {
sum = sum + i;
}
trace ("sum="+sum);
for 後面括弧裡面的內容分為三部分: 初始值; 迴圈條件; 迴圈值變化方式. 對於初始值沒什麼可說的, 隨便取; 迴圈條件就是在什麼條件下繼續迴圈, 只要懂得邏輯運算式就可以了; 迴圈值的變化方式可以用任意的指派陳述式來改變. 下面是一個修改後的例子:
var sum = 0;
//下面是 for 迴圈
for (var i=2; i<100; i+=2) {
sum = sum + i; //trace(i);
}
trace("sum="+sum);
上例中我把初始值 i 改為了 2, 條件改為 <100 (即不包括 100), 迴圈值變成每次加 2. 運行後看看結果, 結果是 1 到 100 的開區間中所有雙數之和. 如果不清楚迴圈內部的工作機理, 可以刪除上例中 for 迴圈體內 //trace(i); 前的雙斜杠, 運行代碼時會在輸出視窗中列出每次的 i 值. 那麼如果初值不滿足迴圈條件會怎樣? 你可以把 i=2 改為 i=100 看看.
對應於 for 還有一個 for...in 迴圈, 這涉及到數組和對象的內容, 在後面會介紹
while & do...while
while & do...while
說實在話, 對於一般的編程 while 用得不多. 但是在需要的時候你才會發現它的價值.
while 迴圈在運行時遵循下面的步驟:
檢查 while 後面括弧內的條件是否成立.
如果條件成立, 運行語句塊內的語句. 否則結束迴圈, 運行迴圈體後面的語句.
運行完語句塊內的語句後回到第一步.
n = 0;
//下面是 while 迴圈
while(n < 5) {
n++;
}
trace("n="+n);
上面的例子運行結果為 n=5. 當 n 小於 5 時迴圈的條件成立, 於是運行其中的 n++ (即 n 增加 1). 當 n 等於 5 時, 因為迴圈條件已經不成立, 所以中止迴圈, 執行後面的 trace 語句.
<!-- / icon and title --><!-- message -->
                                   來源: 閃吧


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。