FlashActionScript編程制作物理課件實(shí)例教程1_第1頁
FlashActionScript編程制作物理課件實(shí)例教程1_第2頁
FlashActionScript編程制作物理課件實(shí)例教程1_第3頁
FlashActionScript編程制作物理課件實(shí)例教程1_第4頁
FlashActionScript編程制作物理課件實(shí)例教程1_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

FlashActionScript編程制作物理課件實(shí)例教程(內(nèi)部資料)山東大學(xué)宋洪曉2007年4月

目錄寫給自己的話……………………3第一課細(xì)節(jié)決定品質(zhì)——Flash動畫制作中的繪圖技巧拾遺………………4第二課ActionScript基礎(chǔ)………………………10第三課第一個ActionScript編程動畫…………18第四課數(shù)值計(jì)算與編程動畫實(shí)例………………24第五課變量的調(diào)整與動態(tài)復(fù)制…………………32第六課流程控制——分支語句…………………38第七課流程控制——循環(huán)………………………44第八課ActionScript語法概述…………………50第九課常用函數(shù)及對象實(shí)例……………………62第十課從構(gòu)思到制作——完整課件制作實(shí)例…………………71附錄1:參考書目…………………74附錄2:常見字體變化形式………………………75附錄3:關(guān)于字體符號的規(guī)定……………………76附錄4:有關(guān)物理量和符號的國家標(biāo)準(zhǔn)…………79

【寫給自己的話】(利用FlashActionScript制作物理課件第一版前言)很久以來就想把在張老師的網(wǎng)絡(luò)課程《物理學(xué)》項(xiàng)目中積累起來的經(jīng)驗(yàn)和做的一些有益的探索整理成文字,以紀(jì)念那一段逝去的時光和告慰那一番付出的心血。但是卻因?yàn)楦鞣N各樣的原因,始終未曾動筆。這個寒假,在女友的催促和鼓勵下,終于坐在電腦前面開始了擠牙膏的過程?;叵肫鹱约簩W(xué)習(xí)Flash和跟隨何希慶老師、張承琚老師一步步摸索如何利用Flash制作物理課件以及與王寧、湯茂建等同學(xué)一起學(xué)習(xí)、探討Flash技術(shù)的過程,真的是感慨萬千。99年初的那個寒假第一次看關(guān)于Flash的入門書;99年暑假開始在物理學(xué)院網(wǎng)站里使用Flash制作網(wǎng)站徽標(biāo);2000年9月去北京參加《新世紀(jì)網(wǎng)絡(luò)課程》的立項(xiàng)申請;2001年暑假在四樓多媒體教室加班制作;2002年底網(wǎng)絡(luò)課程項(xiàng)目基本完成……直到現(xiàn)在,還能記得第一次見到國外使用AttachMovie復(fù)制元件的動畫,興奮地探索源文件的情景;還能記得為了三維坐標(biāo)轉(zhuǎn)換,四處搜索數(shù)學(xué)公式,抓住張旭逼他計(jì)算結(jié)果的情景;還能記得用asv拆解了臺灣王建忍先生的“顏色的疊加”課件,在火車上抱著打印的代碼凝思苦想的情景;還能記得繪制曲線時為了解決旋轉(zhuǎn)線段的長度和粗細(xì),在實(shí)驗(yàn)室通宵苦苦調(diào)試的情景;還能記得暑假里項(xiàng)目組的同學(xué)們加班制作課件時,一手拿著盒飯,一手拿著鼠標(biāo)的情景……現(xiàn)在,網(wǎng)絡(luò)課程《物理學(xué)》、《物理學(xué)(第二版)電子教案》已經(jīng)被高教出版社出版,原來項(xiàng)目組的同學(xué)、朋友們也陸續(xù)畢業(yè),各奔東西。突然想起羅大佑的歌了:春天的花開秋天的風(fēng)以及冬天的落陽,憂郁的青春年少的我曾經(jīng)無知的這么想,風(fēng)車在四季輪回的歌里它天天地流轉(zhuǎn),風(fēng)花雪月的詩句里我在年年的成長……謹(jǐn)以本文獻(xiàn)給我的老師、同學(xué)、朋友們。宋洪曉2005.1

第一課細(xì)節(jié)決定品質(zhì)——Flash動畫制作中的繪圖技巧拾遺我們在制作Flash動畫,尤其是Flash課件中,需要注意到畫面的細(xì)節(jié)。我們下面通過幾個例子,來回顧一下這些我們當(dāng)初可能一略而過的內(nèi)容。注意這些細(xì)節(jié)性的東西,對于提高我們課件制作的水準(zhǔn),還是有非常巨大的意義的。【例1-1:游標(biāo)卡尺的刻度繪制】1、新建Flash文檔,大小設(shè)為550*400,背景設(shè)為白色,幀速12fps。2、點(diǎn)“插入”菜單,“新建元件”。名稱處填“ruler”,類型選“影片剪輯”。3、在影片剪輯ruler內(nèi),找到代表中心的“十”字。4、使用鉛筆工具在十字附近繪制一條豎線。使用選擇工具選取這條豎線。點(diǎn)“窗口”菜單,選擇“信息”面板。將元件位置處修改為如下面的右圖。5、點(diǎn)“窗口”菜單,“屬性”小菜單,選擇“屬性”面板。如果屬性面板是這樣沒有展開,點(diǎn)擊右下角展開按鈕,將屬性面板展開。6、依次將所選線段的屬性設(shè)為,寬:0.0;高:40.0;X:0.0;Y:20.0。7、繼續(xù)使用線條工具添加第二根、第三根刻度線……使用屬性面板準(zhǔn)確定位,使他們間距為10象素,頂端對齊,高度分別為20、20、20、20、30、20、20、20、20、40……8、可以用這樣的方法繪圖效率比較低,我們需要借助一些繪圖技巧。點(diǎn)“視圖”菜單,“網(wǎng)格”小菜單,“編輯網(wǎng)格”。選中“顯示網(wǎng)格”和“貼緊至網(wǎng)格”,水平和豎直間距都填“10px”。保存默認(rèn)值,確定。此后我們顯示網(wǎng)格作為默認(rèn)的編輯環(huán)境。9、顯示網(wǎng)格后,我們繪制線段時只需要貼近網(wǎng)格按下鼠標(biāo),F(xiàn)lash就會自動顯示一個靠近提示的圓圈,繪制長度和位置整十的線段就變得非常簡單了。10、除了一根一根繪制之外,繪制好幾根之后,批量復(fù)制、粘貼出來的線段使用選擇工具整體移動也很方便。11、繪制相當(dāng)于6cm的主尺即可,然后延0高度繪制一條水平線。用文本工具添加上刻度。12、新建影片剪輯元件:vernier。在ruler中復(fù)制一組線段,粘貼到vernier中。點(diǎn)窗口菜單,變形。打開變形面板,寬度改為90%,高度50%,旋轉(zhuǎn),180度,敲回車。13、使用選擇工具把變形后的線段左下角移動到影片剪輯0點(diǎn)。14、回到主場景,把圖層1層標(biāo)簽改為main。點(diǎn)‘窗口“菜單,庫。打開庫面板,將ruler和vernier兩個元件分別拖入主場景,使兩個實(shí)例的注冊點(diǎn)在同一直線上。15、保存,發(fā)布。同學(xué)們課后可自行將游標(biāo)卡尺的外形線條繪制完成?!纠?-1說明】本例中使用不同的方法繪制(調(diào)整)線段的位置,方法繁簡程度差別巨大。使用合適的方法進(jìn)行繪制,可以提高繪圖的效率和精度。進(jìn)行下一個例子之前,我們來重溫一下Flash中的割斷屬性。當(dāng)使用鉛筆、鋼筆、線條、橢圓、矩形或刷子工具來繪制一條與另一條直線或已涂色形狀交叉的直線時,重疊直線會在交叉點(diǎn)處分成線段??梢允褂?選取"工具來分別選擇、移動每條線段并改變其形狀。上圖分別是一個填充;一條直線穿過的填充;分割形成的兩個填充和三條線段?!纠?-2:電表表盤的繪制】1、新建Flash文檔,大小設(shè)為550*400,背景設(shè)為白色,幀速12fps。(以后不特別聲明,本講義中所有的實(shí)例均使用此設(shè)置。)2、新建影片剪輯元件:dial。在dial中繪制一根長150象素,底部在中心十字的豎直線。3、選擇任意變形工具,點(diǎn)擊選擇線段,將中心點(diǎn)的標(biāo)志從中間拖到線段最下角(影片剪輯的中心十字處),如右圖。4、點(diǎn)“窗口”菜單,變形。打開變形面板,選旋轉(zhuǎn),10度。點(diǎn)擊右下角的復(fù)制并應(yīng)用變形按鈕(圖中光標(biāo)處)。5、不停點(diǎn)擊復(fù)制并應(yīng)用變形按鈕,就可依次復(fù)制出旋轉(zhuǎn)10度、20度、30度……的線段。6、進(jìn)行類似3到5步的操作,復(fù)制出向左放旋轉(zhuǎn)的線段。7、選橢圓工具,線條顏色選黑色,填充顏色選無(如下左圖),繪制一個空心圓。注意圓不要與剛剛繪制的線條相交,如下中圖。8、選選擇工具,確保選中了剛才繪制的圓,并檢查一下信息面板的元件位置選擇中心(如上右圖)。打開屬性面板,分別填入寬:280;高:280;X:0;Y:0。9、進(jìn)行類似7到8步的操作,繪制寬高分別為250和265的兩個圓。10、使用選擇工具,分別選取被不需要的部分,一一刪除。只保留電表刻度需要的部分。這個操作中如果畫面太小不易操作,可使用縮放工具放大畫面。10、使用文本工具,給表盤添加刻度和電表標(biāo)志。下圖為放大200%以便鼠標(biāo)操作。11、保存。這個例子中制作的表盤我們將在后面的例子中用到?!纠?-2說明】這個例子制作比較繁瑣,為了減少工作量,我們制作的刻度比較稀疏,利用類似的方法完全可以制作出刻度稠密的表盤或者歐姆表這樣刻度不均勻的表盤來。使用變形面板“復(fù)制并應(yīng)用變形”的方法和圖像的割斷屬性相結(jié)合的方法,是用來制作旋鈕、表盤等旋轉(zhuǎn)部件的絕佳方法,希望同學(xué)們認(rèn)真體會、掌握?!娟P(guān)于字體和字符】Flash中的字體和字符單獨(dú)拿出來說明一下,這是因?yàn)橹谱魑锢碚n件時,公式、符號是不可缺少的,有的老師、同學(xué)制作課件時對公式、字符的標(biāo)準(zhǔn)化注意不夠。對于科學(xué)符號,國家標(biāo)準(zhǔn)GB3102-1993專門作出了詳細(xì)的規(guī)定。如果你的課件想?yún)⒓釉u比或者到出版社出版,則就必須嚴(yán)格遵守國家標(biāo)準(zhǔn)。我們在制作《物理學(xué)網(wǎng)絡(luò)課程》和《大學(xué)物理教學(xué)資源庫》過程中,對此印象特別深刻。也領(lǐng)略了出版社審閱編輯的嚴(yán)格、細(xì)致和眼光銳利。簡單來說,出版物的漢字正文使用宋體,漢字標(biāo)題可使用黑體或宋體加粗,注釋或附錄性文字使用楷體或仿宋,其他字體在正文中較少出現(xiàn)。英文正文和阿拉伯?dāng)?shù)字使用TimesNewRoman字體。公式中的希臘字符,使用Symbol字體。為了表示不同的信息,比如人名、專用名次、矢量等,字符可以使用白體、斜體、粗體、粗斜體等不同的變化。為了增加對字體字型的感性認(rèn)識,附錄2是字體各種形式的變化。附錄3是字體變化的規(guī)則,和查閱相應(yīng)的國家標(biāo)準(zhǔn),附錄4是關(guān)于量和符號的國家標(biāo)準(zhǔn)清單??萍汲霭嫔绾透呓坛霭嫔缱罱鼛啄瓿霭娴慕滩睦锏淖煮w符號都是經(jīng)嚴(yán)格審查的,權(quán)威性較高,在制作Flash動畫時如果不能確定字符變化形式,可作為標(biāo)準(zhǔn)參考。另外,word自帶的公式編輯器輸入公式和特殊字符也是很規(guī)范的,可在公式編輯器編輯公式的狀態(tài)下全選、復(fù)制、粘貼到Flash中,這樣能夠保持矢量字體的可編輯特性。打開公式編輯器的方法是在word中點(diǎn)插入菜單,對象,在新建對象類型的列表中找到“Microsoft公式3.0”,點(diǎn)確定。

第二課ActionScript基礎(chǔ)追溯FlashActionScript的歷史要從Flash2開始,經(jīng)過Flash3、Flash4的不斷發(fā)展,F(xiàn)lash5開始支持面向?qū)ο缶幊?;FlashMX(Flash的第6個版本)就已經(jīng)發(fā)展為比較成熟的面向?qū)ο缶幊陶Z言;FlashMX2004(Flash的第7個版本)引入了ActionScript2.0的概念,使習(xí)慣于在C++或者java下編程的程序員可以在自己熟悉的編程習(xí)慣下工作;Flash8進(jìn)一步加強(qiáng)了安全方面的限制;在Flash將要發(fā)布的下一個版本Flash9中,將引入ActionScript3.0。FlashActionScript版本頻繁的升級,在帶給我們越來越強(qiáng)大的功能的同時,保持了不錯的向下兼容特性,但是或多或少使我們的學(xué)習(xí)ActionScript編程的難度增大了。Flash中的最基本的ActionScript是按鈕事件和對影片時間軸進(jìn)行控制的語句,最初的一些語句從Flash2版本起就存在了,因此在Flash中有很深遠(yuǎn)的影響,很多Flash的入門書至今也只有這一部分的內(nèi)容,這當(dāng)然是遠(yuǎn)遠(yuǎn)不夠的。Flash中使用動作面板來輸入ActionScript程序,如果動作面板沒有打開,我們可以選擇“窗口”菜單,“動作”;或者在需要添加ActionScript的幀或?qū)嵗宵c(diǎn)右鍵菜單,選“動作”;動作面板的快捷鍵是F9。打開的動作面板如圖。我們直接在“腳本”窗格輸入ActionScript代碼即可。動作面板為我們提供了代碼提示、檢查語法和標(biāo)點(diǎn)、自動套用格式、語法加亮顯示、腳本助手等很多強(qiáng)大的功能?!纠?-1:為時間軸添加簡單的ActionScript】1、新建Flash文檔,在時間軸上隨意制作一個Flash動畫。2、新建一個層,層標(biāo)簽改為“action”。3、在action層,時間軸動畫運(yùn)行的某一幀處新建關(guān)鍵幀(右鍵菜單——插入關(guān)鍵幀,或者按快捷鍵F6)。4、打開動作面板,在“教本”窗格輸入ActionScript代碼:stop();5、保存,發(fā)布?!纠?-1說明】我們可以看到,發(fā)布的動畫時間軸運(yùn)行到我們添加stop();語句的地方就停在那里了,這就是這一句ActionScript代碼的作用。如果我們吧stop();改成gotoAndPlay(1);,F(xiàn)lash就在第一幀和這一幀之間循環(huán)播放,余下的幀就運(yùn)行不到了。這樣添加在時間軸上的ActionScript代碼可以實(shí)現(xiàn)對flash播放時間軸的控制,但是距離真正的交互性還是有一定差距的,因?yàn)槲覀儾⒉荒軈⑴c到控制中來。要實(shí)現(xiàn)這樣的交互性,需要使用按鈕。增加按鈕可以使用“插入”菜單——“新建元件”,在類型中選擇按鈕。按鈕里的時間軸和我們在主場景或者影片剪輯中習(xí)慣的時間軸不太一樣,只有四幀,分別是“彈起”、“指針經(jīng)過”、“按下”、“點(diǎn)擊”。望名知意,這幾幀分別是按鈕在不同的狀態(tài)時顯示的形態(tài)。按鈕的ActionScript有兩種寫法,一種是直接寫在按鈕上,這是flash中比較傳統(tǒng)的做法,從Flash2就開始支持這種寫法了,不過這種寫法如果需要給多個按鈕添加動作,就需要分別給每個按鈕添加動作,ActionScript程序的管理不是很方便。另外一種是給按鈕的實(shí)例起名之后,在時間軸上通過按鈕的實(shí)例名定義匿名函數(shù)實(shí)現(xiàn)功能定義,這是FlashMX才開始正式支持的寫法,我們在本講義中一般使用這種寫法。Flash中的按鈕事件有:事件說明onDragOut=function(){}當(dāng)在按鈕上單擊鼠標(biāo)按鈕,然后將鼠標(biāo)指針拖動到按鈕之外時調(diào)用。onDragOver=function(){}當(dāng)用戶在按鈕外部按下鼠標(biāo)按鈕,然后將鼠標(biāo)指針拖動到按鈕之上時調(diào)用。onKeyDown=function(){}當(dāng)按鈕具有鍵盤焦點(diǎn)而且按下某按鍵時調(diào)用。onKeyUp=function(){}當(dāng)按鈕具有輸入焦點(diǎn)而且釋放某按鍵時調(diào)用。onKillFocus=function(newFocus:Object){}當(dāng)按鈕失去鍵盤焦點(diǎn)時調(diào)用。onPress=function(){}當(dāng)按下按鈕時調(diào)用。onRelease=function(){}當(dāng)釋放按鈕時調(diào)用。onReleaseOutside=function(){}在這樣的情況下調(diào)用:在鼠標(biāo)指針位于按鈕內(nèi)部的情況下按下按鈕,然后將鼠標(biāo)指針移到該按鈕外部并釋放鼠標(biāo)按鈕。onRollOut=function(){}當(dāng)鼠標(biāo)指針移至按鈕區(qū)域之外時調(diào)用。onRollOver=function(){}當(dāng)鼠標(biāo)指針移過按鈕區(qū)域時調(diào)用。onSetFocus=function(oldFocus:Object){}當(dāng)按鈕接收鍵盤焦點(diǎn)時調(diào)用。【例2-2:給按鈕添加ActionScript】1、在例2-1的基礎(chǔ)上繼續(xù)修改。2、“插入”菜單——“新建元件”,名稱填“play”,類型選擇按鈕。3、在按鈕的“彈起”幀的中心處寫入黑色的“播放”兩個字。在“指針經(jīng)過”幀插入關(guān)鍵幀,將“播放”兩個字的顏色修改為紅色。在“按下”幀插入關(guān)鍵幀,將“播放”兩個字的顏色修改為綠色。在“點(diǎn)擊”幀插入關(guān)鍵幀,繪制一個和“播放”兩個字差不多大小的矩形。4、回到主場景,新建“btn”層。打開“庫”面板,將按鈕“play”拖入主場景。5、打開屬性面板,在實(shí)例名稱處填入“play_btn”6、在Action層的第一幀添加ActionScript代碼:play_btn.onRelease=function(){ play();};7、保存,發(fā)布?!纠?-2說明】本例是一個最簡單的按鈕應(yīng)用,在時間軸停止后,點(diǎn)擊按鈕,時間軸繼續(xù)向前播放?!纠?-3:按鈕熱區(qū)小游戲】1、新建按鈕元件:yes,在前三幀寫入“滿意”,“點(diǎn)擊”幀繪制一個和滿意差不多大小的矩形。2、新建按鈕元件:no,在前三幀寫入“不滿意”,“點(diǎn)擊”幀繪制一個比較大的的矩形,各個邊都要要超過不滿意三個字。3、回到主場景,將第一層層標(biāo)簽改為main。使用文本工具寫入“山東大學(xué)食堂滿意度調(diào)查”、“你對山大大學(xué)的食堂滿意嗎?”等字樣。4、在第三幀處建立空白關(guān)鍵幀,使用文本工具寫入“謝謝你參與我們的調(diào)查,到目前為止,同學(xué)們對食堂的滿意率為100%。從明天開始,所有食品每份價格提高20%,每份數(shù)量減少20%。”。4、新建btn層,將yes、no元件分別拖入,實(shí)例名分別設(shè)為:yes_btn、no_btn。在btn第二幀建立空白關(guān)鍵幀,將yes、no元件分別拖入,實(shí)例名分別設(shè)為:yes_btn、no_btn。第二幀和第一幀的兩個按鈕交換所在位置,使用信息或?qū)傩悦姘?,保證前后兩幀按鈕位置沒有移動。在btn層第三幀處插入空白關(guān)鍵幀。5、新建action層,在第一幀寫入ActionScript:stop();yes_btn.onRelease=function(){ gotoAndStop(3);};no_btn.onRollOver=function(){ gotoAndStop(2);};6、在action層第二幀寫入ActionScript:yes_btn.onRelease=function(){ gotoAndStop(3);};no_btn.onRollOver=function(){ gotoAndStop(1);};7、保存,發(fā)布?!纠?-3說明】本例中巧妙利用了了Flash按鈕的鼠標(biāo)經(jīng)過事件,制作了一個“永遠(yuǎn)點(diǎn)擊不到”的按鈕:不滿意。達(dá)到了非常幽默的效果?!纠?-4:改變影片剪輯的位置】1、新建Flash文檔,我們統(tǒng)一設(shè)置文檔大小為550*400。在文檔中“修改”菜單——“新建元件”,建立一個名為“ball”的影片剪輯。2、在影片剪輯“ball”的中心“十字”處繪制一個直徑20象素的小球。3、回到主場景,把層標(biāo)簽改為main。打開庫面板,將小球從庫中拖入主場景。將小球的實(shí)例命名為:“ball_mc”。4、新建一個按鈕元件,在按鈕的中心處寫“改變位置”幾個字。將按鈕拖入主場景,實(shí)例名稱填入:“change_btn”。5、添加新的一層,層名稱設(shè)為“action”。6、在action層第一幀添加ActionScript代碼:change_btn.onRelease=function(){ ball_mc._x=100; ball_mc._y=100;};7、保存,發(fā)布?!纠?-4說明】本例中我們通過影片剪輯的實(shí)例名稱直接訪問了實(shí)例的位置屬性(_x、_y),修改了小球的位置。我們常見的影片剪輯屬性還有:_alpha設(shè)置或獲取由MovieClip指定的影片剪輯的Alpha透明度(value)。有效值為0(完全透明)到100(完全不透明)。如果影片剪輯的_alpha設(shè)置為0,雖然其中的對象不可見,但也是活動的。例如,依然可以點(diǎn)擊一個_alpha屬性設(shè)置為0的影片剪輯中的按鈕。_currentframe(只讀);返回由MovieClip指定的時間軸中播放頭所處的幀的編號。_height以像素為單位設(shè)置和獲取影片剪輯的高度。_name返回由MovieClip指定的影片剪輯的實(shí)例名稱。_rotation以度為單位指定影片剪輯的旋轉(zhuǎn)。_totalframes(只讀);返回MovieClip參數(shù)中指定的影片剪輯實(shí)例中的總幀數(shù)。_url(只讀);獲取從中下載影片剪輯的SWF文件的URL。_visible一個布爾值,指示由MovieClip參數(shù)指定的影片是否可見。不可見的影片剪輯(_visible屬性設(shè)置為false)處于禁用狀態(tài)。例如,不能點(diǎn)擊_visible屬性設(shè)置為false的影片剪輯中的按鈕。_width以像素為單位設(shè)置和獲取影片剪輯的寬度。_xmouse(只讀);返回鼠標(biāo)位置的x坐標(biāo)。_xscale設(shè)置從影片剪輯注冊點(diǎn)開始應(yīng)用的該影片剪輯的水平縮放比例(百分比)。默認(rèn)注冊點(diǎn)為(0,0)??s放本地坐標(biāo)系將影響_x和_y屬性的設(shè)置,這兩個設(shè)置是以像素為單位定義的。例如,如果父影片剪輯縮小到50%,則設(shè)置_x屬性時將移動該影片剪輯中的對象,移動距離為在影片設(shè)置為100%時其像素?cái)?shù)的一半。_ymouse(只讀);指示鼠標(biāo)位置的y坐標(biāo)。_yscale設(shè)置從影片剪輯注冊點(diǎn)開始應(yīng)用的影片剪輯垂直縮放比例。默認(rèn)注冊點(diǎn)為(0,0)?!纠?-5:電表指針的轉(zhuǎn)動】1、我們在例1-2的基礎(chǔ)上繼續(xù)修改。2、新建影片剪輯元件hand,在元件hand中心處繪制一個直徑10象素的圓,分別其上方和下方繪制長140和10的豎直線。如右圖。3、回到主場景,將圖層1層標(biāo)簽改為main。將元件dial和元件hand分別拖入主場景,實(shí)例名分別設(shè)為dial_mc和hand_mc。使用任意變形工具將分別將表示中心的圓圈移動到影片的注冊點(diǎn)(十字處)。借助屬性面板,使兩個元件注冊點(diǎn)位置重合。4、新建按鈕元件rotate。在按鈕中心處用文本工具寫:“旋轉(zhuǎn)表針”。5、新建btn層,將按鈕拖入主場景,命名為rotate_btn。6、新建action層,在action層第一幀添加ActionScript代碼:rotate_btn.onRelease=function(){ hand_mc._rotation=15;};7、保存,發(fā)布?!纠?-5說明】本例中我們通過點(diǎn)擊按鈕修改指針的旋轉(zhuǎn)角度。需要注意_rotation旋轉(zhuǎn)屬性是以影片的注冊點(diǎn)(中心十字處)為中心旋轉(zhuǎn)的,我們使用任意變形工具移動中心點(diǎn)只是為了方便屬性面板精確移動指針和表盤的位置。

第三課第一個ActionScript編程動畫我們前一課介紹了FlashActionScript的基礎(chǔ)知識,我們這節(jié)課使用ActionScript制作第一個編程動畫。編程動畫,顧名思義,就是動畫的運(yùn)動是使用程序控制的。在制作編程動畫之前,我們需要先補(bǔ)充一點(diǎn)ActionScript編程的基本知識。變量是Flash中保存信息的容器,有了變量,ActionScript程序才有了記憶。Flash中的變量都需要事先聲明,比如:varmyVariable:Number;這句語句表示聲明一個變量:myVariable,該變量保存一個數(shù)字值。在以上代碼中,var是定義變量的格式,使用:Number指定該變量保存的值的類型,這稱為數(shù)據(jù)類型指定。容器(用變量名表示)在ActionScript中始終不變,但內(nèi)容(值)可以更改。變量的賦值使用賦值運(yùn)算符,最常見的賦值運(yùn)算符就是“=”。比如:v=5;表示將變量v賦值為5。聲明變量的時候可以同時賦值,比如:varmyVariable:Number=10;我們在上一課就已經(jīng)使用過賦值運(yùn)算符給元件的屬性賦值了。ActionScript中常見的數(shù)值計(jì)算有加(+)、減(-)、乘(*)、除(/)。運(yùn)算順序?yàn)橄人愠顺?,后算加減,自左向右計(jì)算。必要的時候可以使用括號“()”來改變運(yùn)算順序。比如a加b的和再除以5,寫為:(a+b)/5?!纠?-1:勻速直線運(yùn)動】1、新建Flash文檔,我們統(tǒng)一設(shè)置文檔大小為550*400。在文檔中“修改”菜單——“新建元件”,建立一個名為“ball”的影片剪輯。2、在影片剪輯“ball”的中心“十字”處繪制一個直徑20象素的小球。3、回到主場景,把圖層1層標(biāo)簽改為main。打開庫面板,將小球從庫中拖入主場景。將小球的實(shí)例命名為:“ball_mc”。4、添加新的一層,層名稱設(shè)為“action”。5、打開動作面板,在action層的第一幀寫入ActionScript:varvx:Number=5;vart:Number=0;6、在action層的第二幀插入關(guān)鍵幀(在第二幀處點(diǎn)擊右鍵——插入關(guān)鍵幀),寫入ActionScript:ball_mc._x=vx*t;7、在action層的第三幀插入關(guān)鍵幀,寫入actionScript:t++;gotoAndPlay(2);8、將小球所在的層(main層)添加幀,以和action層幀數(shù)相等。9、保存、發(fā)布動畫?!纠?-1說明】本例為水平方向的勻速直線運(yùn)動,位移公式為:。我們可以修改第一幀的vx來查看不同速度下運(yùn)動形態(tài)的不同。借助這個程序的例子,我們追蹤一下各語句執(zhí)行的過程,來加深對程序運(yùn)行的理解。首先來看看Flash時間軸運(yùn)行的情況,flash開始運(yùn)行第一幀、然后依次是第二幀、第三幀,如果沒有添加控制語句,flash將跳到最開始的第一幀,繼續(xù)下一個周期。但是現(xiàn)在我們在第三幀添加了gotoAndPlay(2);之后,flash從第三幀跳到第二幀,接著向后運(yùn)行第三幀,又跳回第二幀……如此周而復(fù)始,就形成了第一幀只運(yùn)行一次,循環(huán)執(zhí)行二、三兩幀的情形。我們可以在第一幀添加一些初始化的定義語句,第二幀進(jìn)行具體的運(yùn)算和操作,第三幀實(shí)現(xiàn)循環(huán)變量的修改和循環(huán)的執(zhí)行。這樣的動畫形式習(xí)慣上稱為三幀循環(huán)動畫。在這個例子中,第三幀的t++;是t增加1的意思,從0開始每個循環(huán)執(zhí)行一次,因此t記錄了循環(huán)執(zhí)行的次數(shù)。雖然t并不是flash動畫運(yùn)行的實(shí)際時間,但是由于flash每秒運(yùn)行的幀數(shù)(fps)是固定的,幀循環(huán)次數(shù)也是正比于時間的。在程序運(yùn)行中,使用幀循環(huán)次數(shù)來代替真正的時間會更方便,所以我們使用t(習(xí)慣上變量t表示時間)來表示它。了解了時間軸運(yùn)行的情況,我們再看看每一幀的具體操作。第一幀,執(zhí)行vx和t兩個變量的定義。第二幀,通過t乘以水平速度vx得到小球移動的距離,并把小球移動到計(jì)算出的位置上。然后Flash時間軸運(yùn)行到第三幀,t增加1,時間軸又跳到第二幀。在第二幀根據(jù)新的t計(jì)算出新的距離,設(shè)置小球新的位置……就這樣周而復(fù)始的循環(huán)下去,隨著幀循環(huán)數(shù)t的不斷增長,小球也就在不斷的移動著位置??雌饋砭褪切∏蛟谧鏊椒较虻膭蛩僦本€運(yùn)動了?!纠?-2:水平方向勻加速運(yùn)動】這個例子和例3-2中的繪制步驟基本類似,因此前4步參見例3-2。我們會在這個小球運(yùn)動的動畫上派生出非常多的例子,因此大家可以直接把例3-2刪除幀里的ActionScript代碼后保存為小球運(yùn)動模板,方便使用。1、打開小球運(yùn)動模板。2、在action層的第一幀寫入ActionScript:vara:Number=0.2;//a是水平方向加速度vart:Number=0;//t是運(yùn)行時間3、在action層的第二幀寫入ActionScript:ball_mc._x=____________________;4、在action層的第三幀寫入ActionScript:t++;gotoAndPlay(2);/*每循環(huán)時間t增加1,并跳轉(zhuǎn)到第二幀因該處比較簡單,以后不再注釋說明*/5、另存,發(fā)布?!纠?-2說明】本例中第3步中程序是不完整的,我們知道勻加速運(yùn)動的位移公式:,請各位同學(xué)自己完成這個程序。在第一幀中以//開頭的兩句和第三幀/**/之間的都是flash的注釋。注釋不會包含在發(fā)布的swf文件中,因此不必?fù)?dān)心注釋會增加文件的大小。在flash中添加注釋是一個非常好的習(xí)慣,既方便別人理解自己的思路,也方便自己在以后理解當(dāng)時的寫作思路。【例3-3:斜拋運(yùn)動】1、打開小球運(yùn)動模板2、在action層的第一幀寫入ActionScript:varvx:Number=5;//vx是水平方向速度分量varvy:Number=10;//vy是豎直方向初始速度分量vara:Number=0.2;//a是豎直方向加速度vart:Number=0;//t是運(yùn)行時間3、在action層的第二幀寫入ActionScript:ball_mc._x=vx*t;ball_mc._y=400-(vy*t-a*t*t/2);//影片高度為400,為與習(xí)慣坐標(biāo)方向相同,使用400-y方向位移4、在action層的第三幀寫入ActionScript:t++;gotoAndPlay(2);5、另存,發(fā)布。【例3-3說明】其他部分比較簡單,需要注意的是第二幀中ball_mc._y屬性的設(shè)置。在flash中坐標(biāo)零點(diǎn)在影片左上角,y坐標(biāo)方向?yàn)樽陨现料?。所以單純使用vy*t-a*t*t/2公式計(jì)算出的效果是引力方向向上的斜下拋運(yùn)動,因此使用影片的高度減去該值?!纠?-4:動畫變量、信息的顯示】1、我們在例3-3基礎(chǔ)上繼續(xù)修改。2、選擇主場景,添加新層:show。選擇文本工具,打開屬性面板,文本類型選動態(tài)文本。3、在show層內(nèi)合適位置點(diǎn)擊,建立動態(tài)文本框。在屬性面板實(shí)例名稱處填“show_txt”。4、在action層第二幀后追加ActionScript:show_txt.text="小球x坐標(biāo):"+ball_mc._x;5、另存為例3-4,發(fā)布。【例3-4說明】本例中我們使用動態(tài)文本顯示Flash中的變量和信息。動態(tài)文本顯示的是字符串?dāng)?shù)據(jù)類型。"小球x坐標(biāo):"+ball_mc._x,在這個表達(dá)式中,前面用""引起來的是字符串類型,后面的ball_mc._x是數(shù)值類型。使用連接符號“+”連接時,會自動把數(shù)值類型轉(zhuǎn)變成字符串類型,然后追加到前面的字符串后面。字符串類型的變量定義格式為:varmyString:String;【例3-5:使用按鈕修改變量初值】1、在例3-4基礎(chǔ)上繼續(xù)修改。2、新建按鈕元件:vx_add,在元件中用文本工具寫:水平速度增加。新建按鈕元件:vx_sub,在元件中用文本工具寫:水平速度減少。3、回到主場景,新建btn層。將按鈕元件vx_add和vx_sub拖入場景,實(shí)例名分別設(shè)為“vx_add_btn”和“vx_sub_btn”。4、在action層第一幀后追加ActionScript:vx_add_btn.onRelease=function(){ vx+=0.2; t=0;};vx_sub_btn.onRelease=function(){ vx-=0.2; t=0;};5、另存為例3-5,發(fā)布?!纠?-5說明】本例中使用按鈕改變變量的初始值,并使動畫t歸零,重新運(yùn)行。vx+=0.2是賦值語句的一種簡寫,等價于vx=vx+0.2;。把t歸零的原因是因?yàn)橥蝗桓淖僾x,使用vx*t計(jì)算出的水平方向位移會發(fā)生一個突變,顯得很不真實(shí)。除了vx,我們也可以繼續(xù)添加按鈕,改變vy的初值,加速度a的值等等……這些留待同學(xué)們課后自己完成。這個斜拋運(yùn)動的動畫算是我們第一個比較完整的使用ActionScript編程制作的flash動畫,和我們使用補(bǔ)間動畫方法制作的動畫不同,利用ActionScript編程制作的動畫每一幀小球的位置都是通過計(jì)算得到,科學(xué)性勿庸置疑,而且更重要的是,我們通過修改變量的初始值,可以查看在不同參數(shù)條件下的運(yùn)行情況,更有利于抓住物理內(nèi)涵,說清物理概念,體現(xiàn)物理思想。

第四課數(shù)值計(jì)算與編程動畫實(shí)例Flash中的數(shù)值計(jì)算除常規(guī)的+-*/之外,可以使用Math對象。Math對象是無需使用構(gòu)造函數(shù)即可訪問的頂級對象。使用該對象的方法和屬性可以訪問和處理數(shù)學(xué)常數(shù)和函數(shù)。Math對象的所有屬性和方法都是靜態(tài)的,并且必須使用語法Math.方法(參數(shù))或Math.屬性來調(diào)用。在動作腳本中,使用雙精度IEEE-754浮點(diǎn)數(shù)的最高精度定義常數(shù)。Math對象的三角函數(shù)包括:Math.cos計(jì)算余弦值。Math.sin計(jì)算正弦值。Math.tan計(jì)算正切值。M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論