腳本參考面板的左邊與動(dòng)作面板左邊的腳本目錄很相似。你也可以通過(guò)動(dòng)作面板進(jìn)入腳本參考面板,單擊動(dòng)作面板中的 按鈕可以打開腳本參考面板,打開的腳本參考面板會(huì)自動(dòng)顯示你在動(dòng)作面板中選中的命令。
2.4.3 HTML幫助文檔
如果要獲得ActionScript命令更詳細(xì)的說(shuō)明,可以選擇“幫助”→“動(dòng)作腳本詞典”命令,這將啟動(dòng)你的瀏覽器并打開如圖2-4所示的頁(yè)面。
圖2-4 動(dòng)作腳本詞典
瀏覽器窗口的左邊是所有ActionScript命令和函數(shù)的總目錄,在左邊的條目上單擊,窗口的右邊部分會(huì)顯示其詳細(xì)的內(nèi)容。
選中每個(gè)條目時(shí),右邊窗口中通常會(huì)包括與該條目的說(shuō)明以及它的使用范例。
在你以后使用Flash的時(shí)候可能經(jīng)常會(huì)用到幫助文檔,所以請(qǐng)花一些時(shí)間了解它吧。
2.5 動(dòng)作面板的專家模式
現(xiàn)在你已經(jīng)了解了動(dòng)作面板的標(biāo)準(zhǔn)模式,下面要向你推薦多數(shù)ActionScript程序員使用的專家模式。
在專家模式下,你可以直接通過(guò)鍵盤輸入腳本,而不需要從左邊的目錄中選擇命令。這種模式下你可以在動(dòng)作面板中輸入任何東西,但也很容易導(dǎo)致錯(cuò)誤。
在專家模式下,你仍然可以從左邊的目錄中選擇并插入標(biāo)準(zhǔn)的ActionScript命令、函數(shù)和運(yùn)算符。當(dāng)你記不確切一條命令的時(shí)候就可以使用這種方法。
2.5.1 切換模式
要從標(biāo)準(zhǔn)模式切換到專家模式,可以單擊動(dòng)作面板中的 按鈕,或者單擊動(dòng)作面板右上角的 按鈕,在打開的下拉菜單中選擇“專家模式”命令。在動(dòng)作面板獲得焦點(diǎn)的情況下,快捷鍵Ctrl+Shift+N可以切換到標(biāo)準(zhǔn)模式,快捷鍵Ctrl+Shift+E可以切換到專家模式。
如圖2-5所示為專家模式下的動(dòng)作面板。在專家模式下,參數(shù)設(shè)置區(qū)、命令提示信息都沒有了,腳本編輯窗口占據(jù)了動(dòng)作面板右邊的大部分。
圖2-5 專家模式下的動(dòng)作面板
從標(biāo)準(zhǔn)模式切換到專家模式是非常容易的,但是要從專家模式切換到標(biāo)準(zhǔn)模式則要求腳本中沒有語(yǔ)法錯(cuò)誤。比如說(shuō)你不明白如何設(shè)置一些命令的參數(shù),需要從專家模式切換到標(biāo)準(zhǔn)模式以使用標(biāo)準(zhǔn)模式下的提示,但是Flash卻不允許你進(jìn)行切換,提示你“此腳本中有語(yǔ)法錯(cuò)誤,必須在‘專家模式’下編輯它”;而當(dāng)你知道如何設(shè)置參數(shù)并將腳本書寫正確了,又不再需要切換到標(biāo)準(zhǔn)模式了。
2.5.2 動(dòng)作面板的下拉菜單
動(dòng)作面板的下拉菜單中有一些特別是在專家模式下編輯腳本時(shí)很有用的命令。
你可以使用查找和替換命令在代碼中執(zhí)行查找和替換操作。按快捷鍵Ctrl+F可以打開“查看”對(duì)話框,按快捷鍵Ctrl+H可以打開“替換”對(duì)話框。
“轉(zhuǎn)到行…”命令可以快速轉(zhuǎn)到并選中指定的行。
“語(yǔ)法檢查”命令或按鈕 可以對(duì)窗口中的腳本進(jìn)行語(yǔ)法檢查,如果沒有語(yǔ)法錯(cuò)誤,將提示你“此腳本中沒有錯(cuò)誤。”
通常,語(yǔ)法檢查只能檢查出代碼中的明顯語(yǔ)法錯(cuò)誤,它并不能檢查腳本是否能正確運(yùn)行。經(jīng)常會(huì)發(fā)生這樣的事情,就是每一行的代碼都是正確的,但所有的代碼加在一起卻導(dǎo)致了錯(cuò)誤。
語(yǔ)法檢查功能很實(shí)用,特別是對(duì)初學(xué)者來(lái)說(shuō),它能方便地檢查出誤用運(yùn)算符或缺失括號(hào)等情況。
“自動(dòng)套用格式”命令可以按預(yù)先設(shè)置的樣式和縮進(jìn)等設(shè)置腳本的格式。你可以選擇“自動(dòng)套用格式選項(xiàng)”命令,在“自動(dòng)格式選項(xiàng)”對(duì)話框中重新設(shè)置要應(yīng)用的格式,如圖2-6所示。
圖2-6 “自動(dòng)格式選項(xiàng)”對(duì)話框
另外,選擇“首選項(xiàng)…”命令可以設(shè)置動(dòng)作面板中腳本代碼的顏色、制表符寬度、字體等。你也可以在Flash MX的菜單欄中選擇“編輯”→“首選參數(shù)”命令,在打開的“首選參數(shù)”對(duì)話框中選中“動(dòng)作腳本編輯器”選項(xiàng)卡,打開相同的對(duì)話框,如圖2-7所示。
圖2-7 “首選參數(shù)”對(duì)話框
為腳本上色有利于編寫程序。使用這項(xiàng)功能時(shí),你將看到ActionScript中的關(guān)鍵字以一種顏色顯示,而另外一些變量和常數(shù)以另外的顏色顯示。這對(duì)初學(xué)者是很有幫助的。如正確輸入關(guān)鍵字gotoAndPlay后,它馬上會(huì)以藍(lán)色顯示。如果它的顏色沒有發(fā)生變化,有可能就是你的輸入有誤。
動(dòng)作面板下拉菜單中還有導(dǎo)入導(dǎo)出文件以及打印等命令,可以將使用外部的文本編輯器編輯好的腳本導(dǎo)入到動(dòng)作面板中,或?qū)?dòng)作面板中的腳本導(dǎo)出或打印出來(lái)。
從外部導(dǎo)入腳本的方法并不值得推薦,因?yàn)閯?dòng)作面板雖然不是最快捷的文本編輯器,但是在其中編輯ActionScript是最好的,你可以在需要的時(shí)候參照腳本分類目錄,可以即時(shí)的查看Flash中的影片剪輯的名稱,查看幀編號(hào)或幀標(biāo)簽。另外,你還可以快捷地切換到Flash影片中要插入腳本的任何位置。
2.5.3 在專家模式下輸入腳本
使用動(dòng)作面板的專家模式要比標(biāo)準(zhǔn)模式容易得多,因?yàn)樵趯<夷J较履阒恍枰脫翩I盤,而不需要在窗口中填寫表格。專家模式下的動(dòng)作面板就像一個(gè)簡(jiǎn)單的文本編輯器。
使用專家模式的缺點(diǎn)就是很容易出錯(cuò)。標(biāo)準(zhǔn)模式為你添加了很多限制,而在專家模式下你有可能鍵入不正確的命令或者將參數(shù)放錯(cuò)位置。
在專家模式下,你可以方便地將光標(biāo)定位在合適的位置。但是Flash也不能完全任你隨心所欲,它會(huì)在你鍵入的同時(shí)自動(dòng)調(diào)整腳本格式,將不同的關(guān)鍵字設(shè)置成不同的顏色。
你可以單擊 按鈕以檢查腳本中的語(yǔ)法錯(cuò)誤,單擊 按鈕以格式化整個(gè)腳本,如在需要的位置換行、設(shè)置空格和縮進(jìn)等。
動(dòng)作面板還有代碼提示的功能。當(dāng)你鍵入腳本的時(shí)候有時(shí)會(huì)出現(xiàn)一個(gè)提示菜單,你可以忽略它繼續(xù)鍵入,或者從中選擇需要的項(xiàng)目。單擊 按鈕可以顯示代碼提示。
2.6 練習(xí):在專家模式下輸入腳本
下面我們練習(xí)在專家模式下輸入腳本。其操作步驟如下:
?。?)新建一個(gè)文檔。
?。?)選擇默認(rèn)的場(chǎng)景1圖層1中的第一個(gè)空白關(guān)鍵幀。
(3)按F9鍵打開動(dòng)作面板。
?。?)使用菜單將動(dòng)作面板切換到專家模式。
(5)在腳本編輯區(qū)單擊。
(6)鍵入下面的一行代碼:
gotoAndPlay(5);
第3章
ActionScript編程初步
計(jì)算機(jī)程序是由命令、函數(shù)、運(yùn)算符、條件和循環(huán)等結(jié)構(gòu)組成的。命令是為計(jì)算機(jī)下達(dá)的一系列指令,函數(shù)執(zhí)行計(jì)算和返回值,通過(guò)運(yùn)算符將若干數(shù)據(jù)以某種特定的方式結(jié)合起來(lái),條件測(cè)試一個(gè)或多個(gè)值以返回一個(gè)為true或false的布爾值,循環(huán)結(jié)構(gòu)使得程序能夠重復(fù)執(zhí)行一系列相同的指令。
變量是存儲(chǔ)數(shù)據(jù)的容器,變量有變量名和變量值。
編程是一項(xiàng)需要耐心的工作,首先你必須理解要用程序解決什么樣的問(wèn)題,然后需要將這個(gè)問(wèn)題分解成若干步驟,將每個(gè)步驟再分成更小的步驟,直到每個(gè)步驟都小得很容易解決了為止。
程序編寫好后,可能會(huì)存在許多漏洞或缺陷,所以你還需要對(duì)程序進(jìn)行調(diào)試,直到程序能正確運(yùn)行為止。
3.1 程序基本結(jié)構(gòu)
計(jì)算機(jī)程序是由命令、函數(shù)、運(yùn)算符、條件和循環(huán)等結(jié)構(gòu)組成的。
3.1.1 命令、函數(shù)和運(yùn)算符
在此之前,我們都是用關(guān)鍵字來(lái)描述ActionScript中的元素,如關(guān)鍵字gotoAndPlay,它也是一個(gè)命令。
命令是ActionScript中用來(lái)告訴Flash所要執(zhí)行的特定操作的元素。之所以稱之為命令,就是因?yàn)樗鼘⒈粐?yán)格的遵照?qǐng)?zhí)行,如果要用gotoAndPlay跳轉(zhuǎn)到一個(gè)不存在的幀,這樣的命令就不能被執(zhí)行。
命令是程序中最基本的元素,在Flash中如果不使用命令,幾乎不能進(jìn)行任何操作。從本書中你將學(xué)到很多命令。
函數(shù)是ActionScript中用來(lái)執(zhí)行計(jì)算和返回結(jié)果的元素。例如,一個(gè)特定的函數(shù)可以計(jì)算并返回一個(gè)指定數(shù)的平方根。
命令和函數(shù)都可以使用參數(shù)。參數(shù)就是傳遞給命令或函數(shù)的一個(gè)值。如gotoAndPlay命令就至少需要一個(gè)幀編號(hào)或幀標(biāo)簽作為參數(shù)。求平方根的函數(shù)也需要一個(gè)數(shù)值作為參數(shù)。
與命令和函數(shù)不同的是運(yùn)算符,它們主要是一些符號(hào),而不是字母。例如,+運(yùn)算符執(zhí)行兩數(shù)相加的操作。
在ActionScript程序中你將會(huì)用到大量的命令、函數(shù)和運(yùn)算符。
3.1.2 變量
要編寫復(fù)雜的計(jì)算機(jī)程序往往需要存儲(chǔ)很多的信息。有時(shí)你可能只需要存儲(chǔ)很短暫的時(shí)間,例如,如果需要重復(fù)執(zhí)行10次相同的命令,你就需要對(duì)命令的執(zhí)行次數(shù)進(jìn)行記數(shù),直到滿10次為止。
所有的編程語(yǔ)言都使用變量來(lái)存儲(chǔ)信息。一個(gè)變量由兩部分構(gòu)成:變量名和變量的值。
1.變量名
變量名通常是一個(gè)單詞或幾個(gè)單詞構(gòu)成的字符串,也可以是一個(gè)字母。總的來(lái)說(shuō),你需要盡可能地為變量指定一個(gè)有意義的名稱。
例如,如果你要使用變量存儲(chǔ)用戶的姓名,用userName作為變量名將是一個(gè)很好的選擇。如果你使用n作變量名,似乎太短了一點(diǎn);如果使用name,又可能與影片中其他對(duì)象的名稱相混淆。
在ActionScript中為變量指定變量名時(shí)已經(jīng)形成了一種不成文的規(guī)范,就是變量名通常以小寫字母開頭,當(dāng)一個(gè)新的單詞出現(xiàn)時(shí),大寫這個(gè)新單詞的第一個(gè)字母,如userName,長(zhǎng)一點(diǎn)的例子如currentUserFirstName。
變量名中不允許出現(xiàn)空格,也不允許出現(xiàn)特殊符號(hào),但是可以使用數(shù)字。
2.變量類型
你可以用變量存儲(chǔ)不同類型的數(shù)據(jù)。數(shù)字是最簡(jiǎn)單的變量類型。
你可以在變量中存儲(chǔ)兩種不同類型的數(shù)字:整數(shù)和浮點(diǎn)數(shù)。整數(shù)沒有小數(shù)點(diǎn)部分,如117、-3685都是整數(shù)。浮點(diǎn)數(shù)有小數(shù)點(diǎn)部分,如0.1、532.23、-3.7都是浮點(diǎn)數(shù)。
你也可以在變量中存儲(chǔ)字符串,字符串就是由字符組成的序列,可以是一個(gè)或多個(gè)字符,甚至可以沒有字符,即空字符串。
使用引號(hào)定義字符串,使其與其他變量相區(qū)別。如7是一個(gè)數(shù)字,而“7”則是一個(gè)字符串,這個(gè)字符串由一個(gè)字符7組成。
在別的編程語(yǔ)言中,你可能需要在程序的開頭部分提前定義程序中要用到的變量的具體類型,但在ActionScript中不需要預(yù)先聲明變量,你只需要直接使用它們,F(xiàn)lash在第一次遇到它們的時(shí)候會(huì)自動(dòng)為它們創(chuàng)建變量。
另外,變量所能存放的數(shù)據(jù)類型也沒有嚴(yán)格的限定,某一變量可以在一個(gè)位置存放字符串,而在另一個(gè)位置存放數(shù)字。
這種靈活性并不是經(jīng)常用得到,但是它可以讓程序員們少一些不必要的擔(dān)心。
ActionScript程序員不必?fù)?dān)心的另一個(gè)問(wèn)題是廢棄變量的空間回收問(wèn)題。即當(dāng)你不再需要使用一個(gè)變量的時(shí)候,你可能需要收回該變量占用的存儲(chǔ)空間。大多數(shù)現(xiàn)代的計(jì)算機(jī)語(yǔ)言如ActionScript都可以自動(dòng)回收空間,所以你也不必?fù)?dān)心了。
除數(shù)字和字符串類型外還有一些別的變量數(shù)據(jù)類型。例如,數(shù)組可以存放一系列的數(shù)據(jù)而非單個(gè)數(shù)據(jù)。
3.1.3 條件
程序本身并不能作出抽象的決定,但是它可以獲取數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行分析比較,然后根據(jù)分析結(jié)果執(zhí)行不同的任務(wù)。
例如,你想要檢查用戶輸入的名字并確定其至少包含3個(gè)字母。程序需要做的事情就是對(duì)用戶名作出判斷,如果是3個(gè)或更多的字母,就執(zhí)行一種操作;如果不足3個(gè)字母則執(zhí)行另一種操作。
這里,作出一個(gè)決定需要兩步,第一步是檢查條件是否滿足,如果名稱符合3個(gè)字母長(zhǎng)度,條件滿足,我們稱條件的值為真 ?。╰rue);否則條件不滿足,我們稱條件的值為假(false)。所有的條件都必須是兩個(gè)值中的一種,要么為真,要么為假。要么為真(true)要么為假(false)的數(shù)據(jù)類型稱為布爾(boolean)類型。
決定的第二步是根據(jù)條件為true或?yàn)閒alse的情況選擇要執(zhí)行哪些代碼。有時(shí)只有一個(gè)選項(xiàng),當(dāng)條件為true時(shí)執(zhí)行該選項(xiàng); 如果條件為false,將不執(zhí)行任何代碼。有時(shí)會(huì)有兩個(gè)相對(duì)的選項(xiàng),條件為true和false時(shí)分別執(zhí)行不同的代碼。
例如,你想讓計(jì)算機(jī)根據(jù)一個(gè)變量的值是1、2或3執(zhí)行3種不同的任務(wù),可以像這樣表達(dá):
如果變量的值等于1,執(zhí)行命令1
如果變量的值等于2,執(zhí)行命令2
如果變量的值等于3,執(zhí)行命令3
條件總是建立在比較之上的,你可以比較兩個(gè)變量的值以判斷它們是否相等;或者判斷一個(gè)是否大于另一個(gè),或是小于另一個(gè)。如果變量是字符串類型,你可以比較它們按字典順序排列時(shí)的先后次序。
3.1.4 循環(huán)
與人不同,計(jì)算機(jī)很適合做重復(fù)性的工作。一件事情僅僅重復(fù)幾次就可能使人厭倦,但是讓計(jì)算機(jī)重復(fù)執(zhí)行成千上萬(wàn)次它都照樣有耐心。
循環(huán)在每種編程語(yǔ)言中都是一個(gè)很重要的部分,ActionScript也不例外。你可以指定一條指令執(zhí)行給定的次數(shù),或者令其執(zhí)行到滿足指定的條件為止。
事實(shí)上,條件是循環(huán)中的重要組成部分,整個(gè)循環(huán)只需要一個(gè)開始點(diǎn),一個(gè)結(jié)束點(diǎn),再加上一個(gè)標(biāo)志循環(huán)結(jié)束的條件。
例如,你需要循環(huán)10次,使用一個(gè)變量從0開始計(jì)數(shù)。每循環(huán)一次,計(jì)數(shù)加1。當(dāng)計(jì)數(shù)變量達(dá)到10時(shí),循環(huán)結(jié)束,程序繼續(xù)執(zhí)行循環(huán)以后的部分。下面的內(nèi)容代表了一個(gè)標(biāo)準(zhǔn)的循環(huán)結(jié)構(gòu):
(1)循環(huán)以前的命令。
(2)循環(huán)開始,計(jì)數(shù)變量置0。
?。?)循環(huán)中的命令。
(4)計(jì)數(shù)變量加1。
?。?)如果計(jì)數(shù)變量小于10,執(zhí)行步驟(3)。
?。?)循環(huán)以后的命令。
在上面的步驟中,步驟(1)只執(zhí)行1次,步驟(2)表示循環(huán)的開始,步驟(3)、(4)、(5)都將執(zhí)行10次,當(dāng)循環(huán)結(jié)束后,執(zhí)行步驟(6)及以后的部分。