flash action 詳解(6)_Flash教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:flash action 詳解(5)對象|Object對象是Actionscript中的一個(gè)重要數(shù)據(jù)類型.說得更清楚一些,它就是現(xiàn)在大多數(shù)編程語言中的類(Class).其實(shí)在Flash中使用的MovieClip其實(shí)
第 3 章: 條件和循環(huán)--綜述Actions cript 的條件和循環(huán)語句有 if, else, else if, for, while, do...while, for...in 和tch. 在 Flash 中它們被叫做流程控制動作(Action), 但實(shí)際上, 其實(shí)質(zhì)與其它程序語言沒什么不一樣的.
因?yàn)闂l件和循環(huán)語句是程序語言中最基礎(chǔ)的, 也是最具有實(shí)用價(jià)值的語句, 所以要在這里仔細(xì)講解一下. 對于有 C 和 Java 等編程經(jīng)驗(yàn)的讀者隨意瀏覽一下就可以了.
條件語if句--if
可以說是程序語言中最基本的條件判定語句. 無論在任何語言中都有它的身影.
由下面的例子可以了解它的格式:
name = "SiC";
//下面是 if 語句
if(name == "SiC"){
trace("作者");
}
if 語句通過判定其后圓括號內(nèi)的邏輯表達(dá)式是否為 true 來確定是否執(zhí)行大括號內(nèi)的語句. 假如邏輯表達(dá)式 name == "SiC" 返回值為真, 就在輸出窗口(Output Window)內(nèi)顯示"作者", 否則就不執(zhí)行.
然后讓我們設(shè)想一下下面例子的效果:
if(1){
trace("總是執(zhí)行");
}
假如你還記得前面數(shù)據(jù)類型的內(nèi)容, 那么應(yīng)該可以看出, 這時(shí)的 if 語句基本上是多余的, 因?yàn)閷τ诔A?1, 邏輯表達(dá)式的值恒為 true(其實(shí) 1 就是邏輯值 true 的數(shù)值表示形式). 但對于常量 0, 則永遠(yuǎn)為 false. 你可以試試把上例中的 1 改成一個(gè)字符串常量(例如 "hi!")看看會有什么效果.
再看一個(gè)例子:
name = "SiC";
//下面是 if 語句
if(name = "SiC"){
trace("作者");
}
比較一下看這個(gè)例子與第一個(gè)例子有什么不同? 不同之處就在于第一個(gè)用了 ==, 而這個(gè)用了 =. 對于這個(gè)例子, if 的判定永遠(yuǎn)為 true. 想想為什么? 問題就在于使用了賦值運(yùn)算符 = 而不是邏輯運(yùn)算符 ==. 對于賦值運(yùn)算, 其返回的邏輯值總是 true. 這也是初學(xué)者常犯的錯誤.
一定要注重區(qū)分賦值運(yùn)算符 = 和邏輯運(yùn)算符 ==. 否則你會碰到一些莫名其妙的錯誤和問題, 而且語法檢查也找不出錯誤(因?yàn)橘x值運(yùn)算表達(dá)式也是有效的條件表達(dá)式). 所以請記住, Actions cript 的相等邏輯運(yùn)算符是 == 而不是 =.
if...else
假如想要在判定條件不成立時(shí)執(zhí)行另一項(xiàng)操作時(shí)怎么辦? 很簡單, 在 if 語句后面加上個(gè) else 語句塊就可以了:
name = "未知";
//下面是 if...else 語句
if(name == "SiC"){
trace("作者");
} else {
trace("未知");
}
很簡單吧? 只要把在判定結(jié)果為假時(shí)要執(zhí)行的語句放在 else 后的大括號里就行了.
if...else if
假如要進(jìn)行很多個(gè)條件判定怎么辦? 也好辦, 用 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("未知");
}
你可以接任意多個(gè)的 else if 來進(jìn)行多個(gè)條件的判定, 最后的 else 語句塊可有可無(根據(jù)實(shí)際需要選用). 唯一不足的就是 else if 太多時(shí)執(zhí)行速度較慢(在其它程序語言中也是一大問題). 這時(shí)就輪到tch 出場了
//下面是tch 語句
trace ("這是我希望得到的數(shù)字.");
break;
case 2:
trace ("這個(gè)數(shù)字比我的小一點(diǎn).");
break;
case 3:
trace ("這是我的數(shù)字.");
break;
default:
trace ("這不是我要的數(shù)字.")
}
上面的例子是一個(gè)完整的tch 語句塊. 在 case 要害字后面的就是需要滿足的條件, 假如都不滿足, ActionScipt 會查找是否存在 default 語句塊, 假如存在, 則執(zhí)行其中的語句. 另外, 你可能已經(jīng)發(fā)現(xiàn)在每個(gè)語句塊后都有一個(gè) break 要害字, 為什么呢? 因?yàn)榧偃鐩]有用 break 來跳出tch 條件選擇語句, 程序會繼續(xù)向下搜索滿足條件的 case 項(xiàng)目(包括 defualt 塊)并執(zhí)行其中的語句. 下面是一個(gè)修改后的例子:
mynumber = 3; //賦值給 mynumber
//下面是沒有加 break 的tch 語句
trace ("這是我希望得到的數(shù)字.");
case 2:
trace ("這個(gè)數(shù)字比我的小一點(diǎn).");
case 3:
trace ("這是我的數(shù)字.");
default:
trace ("這不是我要的數(shù)字.")
}
運(yùn)行一下這個(gè)例子, 你會發(fā)現(xiàn)會同時(shí)輸出了 "這是我的數(shù)字" 和 "這不是我要的數(shù)字". 為什么? 因?yàn)闆]有了 break, 在運(yùn)行了滿足條件的 case 3: 語句塊后, 條件選擇語句仍會繼續(xù)執(zhí)行, 而 default 塊作為默認(rèn)條件, 它總是會被執(zhí)行, 從而產(chǎn)生了這樣的結(jié)果. 一些常見的程序錯誤也就由此而來.
在 Actions cript 中還有一個(gè)用于循環(huán)的 continue 命令, 它可以直接跳到所在循環(huán)的條件檢測部分(即立即進(jìn)行下一次循環(huán)的條件判定). 這個(gè)命令不常用到, 所以在這里沒有講解. .
分享:flash action 詳解(4)在實(shí)際應(yīng)用中,有一些非凡的字符不能直接輸入在字符串中,例如不能在字符串中直接輸入引號(會破壞字符串的完整性).這時(shí)我們就需要用到轉(zhuǎn)義字符了(Escaping).
相關(guān)Flash教程:
- 相關(guān)鏈接:
- 教程說明:
Flash教程-flash action 詳解(6)
。