as3.0游戲編程大學(xué)--55頁.doc_第1頁
as3.0游戲編程大學(xué)--55頁.doc_第2頁
as3.0游戲編程大學(xué)--55頁.doc_第3頁
as3.0游戲編程大學(xué)--55頁.doc_第4頁
as3.0游戲編程大學(xué)--55頁.doc_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

0.緒論對(duì)Flash游戲制作者來說,這是一個(gè)非常好的時(shí)期。到目前為止,還沒有一款軟件比這更好的來設(shè)計(jì)中小型游戲了。Flash CS3 Professional對(duì)我們來說,是快速的,強(qiáng)大的和容易掌握的。其中最關(guān)鍵的就是,F(xiàn)lash最新發(fā)布的版本有著強(qiáng)大的ActionScript 3.0編程語言。ActionScript1.0和2.0讓Flash制作者感到太傷心了,在程序的調(diào)試過程中,經(jīng)常會(huì)出現(xiàn)一些Bugs,導(dǎo)致不能快速的制作出自己的作品。相對(duì)而言,ActionScript 3.0編程語言會(huì)讓你感到非同尋常。在使用中,你會(huì)發(fā)現(xiàn)它能夠快速地,非常容易的制作出自己想象中的作品。最后,就讓這本書帶你走進(jìn)Flash游戲的世界中吧,希望通過本書的學(xué)習(xí),它可以帶給你更多的快樂。0.1Flash游戲的發(fā)展1995年10月,對(duì)我這個(gè)游戲設(shè)計(jì)師來說,是非常激動(dòng)的。因?yàn)镸acromedia剛剛發(fā)布了Shockwave播放器,這樣就可以把自己制作出來的作品發(fā)布到網(wǎng)絡(luò)上了。從最初的Shockwave播放器發(fā)布之后,還有兩次比較激動(dòng)人心的就是,Shockwave 3D和ActionScript3.0的發(fā)布。雖然Flash游戲環(huán)繞在我們周圍,但如果和Shockwave游戲比起來,它就比較遜色了,因?yàn)镾hockwave軟件在3D方面是非??焖俸蛷?qiáng)大的。不管怎樣,我們現(xiàn)在有了ActionScript3.0,F(xiàn)lash就會(huì)變得和Shockwave一樣強(qiáng)大。例如,F(xiàn)lash 9播放器已經(jīng)占有了全球80的桌面電腦。截至到現(xiàn)在,幾乎全部安裝Flash 8播放器的用戶已經(jīng)將該軟件更新到了Flash 9的版本,這對(duì)我們Flash游戲制作者來說,無非有莫大的幫助。Flash 9播放器還可以應(yīng)用于Linux系統(tǒng),網(wǎng)絡(luò)電視窗口,游戲控制臺(tái)等多方面軟件,現(xiàn)在,我們擁有了Flash 9player和ActionScript 3.0以后,就可以輕便地來做這些事情了。你可以開發(fā)雙方獨(dú)立的或者基于網(wǎng)絡(luò)版本的Flash游戲,當(dāng)然,還還可以利用第三方的軟件來擴(kuò)展你的Flash功能,以便編譯出更強(qiáng)壯的代碼??傊?,對(duì)制作中小型的游戲來說,ActionScript 3.0的功能是非常強(qiáng)大和實(shí)用的。0.2本書為誰而寫本書適用于使用Flash制作游戲的任何人,讀者可以根據(jù)自身情況選擇不同的方式來用好此書:對(duì)Flash繪圖和編程都沒有學(xué)過的新手來說,最好先學(xué)習(xí)一些基本的編程語法再看。當(dāng)然,如果你對(duì)Flash有濃厚的興趣,也可以直接用此書來學(xué)習(xí)ActionScript 3.0;如果你以前使用的是ActionScript 1.0或者2.0,你也可以用此書快速的學(xué)會(huì)ActionScript 3.0。不過,你應(yīng)該盡可能的把以前ActionScript版本的編程方式忘掉。確切地來說,ActionScript 3.0與前期的1.0和2.0的版本已經(jīng)有很大不同。我自己認(rèn)為它是一門全新的語言。對(duì)于有些動(dòng)畫和編程基礎(chǔ)的人來說,如果想進(jìn)一步學(xué)習(xí)游戲編程,本書是再適合不過了;如果你沒有學(xué)過編程,但喜歡繪圖,插圖,或者動(dòng)畫。你可以用本書的例子作為素材。也就是說,你可以把本書中源文件拿出來用到你自己制作的游戲中去;同樣的,如果你是優(yōu)秀的ActionScript 3.0程序師,本書也可以作為給你提供的一個(gè)代碼庫,你可以把它運(yùn)用到自己設(shè)計(jì)的游戲中去。0.3 使用本書需要具備的知識(shí) 除了正確地使用軟件之外,對(duì)大多數(shù)讀者來說,如果想從本書中獲取更多的知識(shí),還需要對(duì)Flash編程基本知識(shí)做些準(zhǔn)備。 必備知識(shí) 對(duì)大多數(shù)讀者來說,您應(yīng)該對(duì)Flash CS3的運(yùn)行環(huán)境很熟悉了。如果你是一位新的Flash用戶,可以在Flash CS3的軟件中打開用戶指導(dǎo)說明,或者選擇Flash幫助或按F1鍵查看幫助。另外,你也可以買本初級(jí)者的書翻閱或者在網(wǎng)上直接觀看在線教程。本書是分章節(jié)講授的,各章節(jié)間沒有太大的連貫性。如果你想應(yīng)用本書范例中代碼的話。你只要有些編程基礎(chǔ)就可以了,比如ActionScript1.0或者2.0,JavaScript,Java,Lingo,Perl,PHP,C等等任何結(jié)構(gòu)化設(shè)計(jì)語言中的一樣就可以。只要你稍微對(duì)循環(huán),條件語句和函數(shù)等知識(shí)有些了解,也就很容易理解ActionScript 3.0語言了。在第一章中“Flash和ActionScript 3.0的應(yīng)用”就概括了這些基本的語法。如果你是一位程序員,以前沒有使用過Flash軟件的話,首先應(yīng)該閱讀一下Flash用戶指南中關(guān)于繪圖和編程的基礎(chǔ)部分。軟件應(yīng)用當(dāng)然,學(xué)習(xí)本書需要用到Flash CS3 Professional或者更新的Flash 8 Studio,本書不適用于之前Flash版本的用戶。Flash CS3在Windows和Mac系統(tǒng)上使用效果是一樣的,本書中的屏幕截圖取自Mac系統(tǒng)中的Flash程序,與Windows系統(tǒng)中Flash的截圖應(yīng)該是一致的。Flash將來的版本很有可能是ActionScript 3.0編程語言的延續(xù),或許一些菜單選項(xiàng)和快捷鍵要發(fā)生變化,但你仍然能夠使用本書。這時(shí),你要考慮在發(fā)布文檔時(shí)設(shè)置成Flash 9播放器和ActionScript3.0,以確保更大的兼容性。源文件如果你需要本書的源文件,請(qǐng)看下面的怎樣獲取源文件的說明。0.4 在你的游戲中如何使用示例本書包含16個(gè)完整的游戲,其中也包括一些經(jīng)典的游戲,例如:match three,asildescrolling platform游戲和word search。經(jīng)常有人這樣問我:“能夠把這些游戲運(yùn)用到自己的作品中呢?”答案就是,當(dāng)然了,你可以把這些游戲都修改成自己的,例如,你可以改變里面的圖形、游戲的開始或其他內(nèi)容等部分都可以。但是本書不提倡把這些游戲或者源代碼清單原封不動(dòng)的發(fā)布或者復(fù)制。當(dāng)你在你的方案中用這些游戲作品時(shí),不要直接復(fù)制過去,這樣是不專業(yè)的,在下面的網(wǎng)站中可以找到答案如果你僅使用其中的一部分代碼,或者一個(gè)小游戲作為某個(gè)方案的框架,這無不可。總之,要正確的了解這些常識(shí)和慣例,謝謝。0.5 你在這本書中可以學(xué)到什么第一章,“Flash和ActionScript 3.0的應(yīng)用”,主要介紹了ActionScript 3.0和一些基本的概念,如游戲編程策略,游戲清單等,這些可以幫助你在Flash CS3中更好地制作游戲。第二章,“ActionScript游戲元素”,呈獻(xiàn)給大家一些函數(shù)的代碼片段,例如創(chuàng)建文本域,繪制圖形,播放聲音等。這些在代碼庫中都是非常有用的,也始終貫穿于本書當(dāng)中。第三章至第十二章,每一章都包括一個(gè)或多個(gè)完整的游戲,書中正文的每一章都有游戲代碼供你使用,或者你也可以用本書提供的源文件和代碼。第三章,“基本游戲結(jié)構(gòu):A Matching Game”,這個(gè)與本書其他的游戲有些不同。它包括完成游戲前怎樣檢查代碼,設(shè)計(jì)一個(gè)完整的游戲需要哪些步驟等說明。其余章節(jié)大部分在開始制作游戲之前都包含一個(gè)特定的主題,例如:在第四章中就以“數(shù)組和數(shù)據(jù)對(duì)象”開始講解的。但是,本書所介紹的內(nèi)容遠(yuǎn)遠(yuǎn)不止書本上這些,在線還可以獲取更多的知識(shí)。0.6 關(guān)于FlashGameU.com網(wǎng)站 這個(gè)FlashGameU.com網(wǎng)站可以說是這本書的伙伴,在這個(gè)網(wǎng)站上可以找到這個(gè)源文件,補(bǔ)充資料以及新的內(nèi)容,并設(shè)有Flash發(fā)展論壇和作者的Blog等。本書的源文件是按章節(jié)劃分的,在包內(nèi)部還更進(jìn)一步的對(duì)每個(gè)小游戲打包,在網(wǎng)站主頁上有鏈接可以直接下載。在網(wǎng)站上,你能夠看到作者的Blog,如果你對(duì)本書有什么建議或者意見,或者有關(guān)于Flash游戲發(fā)展存在的問題,可以直接在論壇上留言或者通過作者的Blog聯(lián)系。1.1 ActionScript 3.0是什么ActionScript3.0是在2006年發(fā)布Flex 2時(shí)提出來的,F(xiàn)lex允許開發(fā)者創(chuàng)建的Flash Player程序和Flash一樣。但是,F(xiàn)lash卻給我們提供了更加直觀的界面,因此它就更適合用作游戲開發(fā)。ActionScript是在Flash4發(fā)布的時(shí)候提出來的,當(dāng)時(shí)的名稱就叫做ActionScript,他的主要能是用來控制幀的跳轉(zhuǎn)和鼠標(biāo),鍵盤的交互。直到發(fā)布Flash5之后,ActionScript才正式地作為ActionScript1.0使用,但是它的發(fā)展速度相當(dāng)快,到了Flash MX2004(Flash 7),就引進(jìn)了ActionScript2.0,它遵循ECMA標(biāo)準(zhǔn),在面向?qū)ο缶幊谭矫?,它開始變得逐步強(qiáng)大。像應(yīng)用于瀏覽器的JavaScript,也是基于ECMA標(biāo)準(zhǔn)的。 注:Flash 9 播放器內(nèi)部建有2套虛擬機(jī),AVM1用來執(zhí)行ActionScript1.0和2.0代碼,AVM2用來執(zhí)行ActionScript3.0代碼,但是AVM2的速度要比AVM1快得多??梢哉fActionScript3.0最近幾年已經(jīng)發(fā)展到頂點(diǎn)了。Flash每個(gè)版本的發(fā)布,大家都會(huì)把它推到極限?,F(xiàn)在,我們已經(jīng)有了一個(gè)優(yōu)秀的開發(fā)環(huán)境來制作我們的2D游戲了,你將會(huì)體會(huì)到用一小段代碼就可以讓游戲運(yùn)行起來的奧妙。1.2創(chuàng)建一個(gè)簡單的腳本程序首先,打開Flash應(yīng)用程序,選擇“文件”“新建”,會(huì)出現(xiàn)一個(gè)文檔窗口,然后,選擇第一項(xiàng)“Flash文件(ActionScript3.0)”,點(diǎn)擊“確定”,軟件會(huì)自動(dòng)生成一個(gè)“未命名1”的空白文檔。可以看到,在該文檔頂部有一個(gè)時(shí)間軸,還有幀數(shù),你看到幀數(shù)量的多少取決于Flash軟件顯示窗口的大小。在Flash繪圖時(shí)需要用到很多幀,但對(duì)于我們游戲制作者來說,用少數(shù)的幾幀就能實(shí)現(xiàn)效果了。時(shí)間軸可以有一層或者多層,在新建文檔的窗口中默認(rèn)自動(dòng)打開一層,名稱為“圖層一”,在第一幀你可以看到,有個(gè)空心小圓圈的標(biāo)志,它就表示該幀為空白關(guān)鍵幀。注:關(guān)鍵幀是一個(gè)動(dòng)畫術(shù)語,在Flash動(dòng)畫制作中會(huì)經(jīng)常用到,它的作用就是定義在某一個(gè)時(shí)間點(diǎn)上元素的狀態(tài)和參數(shù)的變化。例如,選中時(shí)間軸的第1幀,在舞臺(tái)的左端放置一個(gè)影片剪輯,然后在第9幀插入一個(gè)關(guān)鍵幀,并把該影片剪輯移動(dòng)到舞臺(tái)的右端,然后在第1幀至第9幀的任一幀點(diǎn)擊鼠標(biāo)右鍵創(chuàng)建補(bǔ)間動(dòng)畫,然后選擇菜單“控制”“測試影片”,發(fā)現(xiàn)該影片剪輯已經(jīng)能夠在舞臺(tái)上運(yùn)動(dòng)了。對(duì)我們游戲編程者來說,我們不會(huì)用關(guān)鍵幀來做動(dòng)畫,需要的只是在關(guān)鍵幀時(shí)間點(diǎn)上放置游戲中需要的“說明”,“播放”,“游戲結(jié)束”等物件而已。你還可以在任何一層的任意關(guān)鍵幀輸入自己的腳本代碼,具體操作是選中這個(gè)關(guān)鍵幀,點(diǎn)擊Flash菜單“窗口”“動(dòng)作”或者按【F9】鍵即可打開腳本編輯區(qū)輸入自己的代碼。在腳本編輯區(qū)的上部,有可以實(shí)現(xiàn)很多功能的控制選項(xiàng),例如可以對(duì)代碼進(jìn)行格式套用等。但是,我們不準(zhǔn)備詳細(xì)介紹這些控制選項(xiàng),因?yàn)楹竺鎸懗龅拇a大部分都在外部類中。下面,就讓我們來創(chuàng)建一個(gè)簡單的Hello World程序吧,在腳本編輯區(qū)輸入以下代碼:trace(“Hello World”);好了,就是這么簡單,現(xiàn)在你已經(jīng)創(chuàng)建了第一個(gè)AS3.0的程序。來測試一下吧,選擇“控制”“測試影片”或者按【Ctrl】回車鍵。如果你沒有創(chuàng)建自己的Flash影片,可以直接打開HelloWorld1.fla文件進(jìn)行測試?,F(xiàn)在,來看一下輸出面板,在窗口的左上角你會(huì)看到一行輸出了“Hello World”,但是它只用于在Flash 9中測試影片,它不會(huì)顯示在舞臺(tái)上,如果想顯示在舞臺(tái)上的話,我們還需要進(jìn)一步做更多些的工作。創(chuàng)建可視對(duì)象如果想讓“Hello World”在影片中能夠看到的話,我們用3行代碼就能夠?qū)崿F(xiàn)了。第一行需要?jiǎng)?chuàng)建一個(gè)文本域顯示在屏幕上,她的作用是用來存放文本的容器;第二行把該段文本存放在文本域內(nèi)就可以了;第三行是把這個(gè)文本域添加到舞臺(tái)上,舞臺(tái)上影片的顯示區(qū)域,你可以在舞臺(tái)上布置自己的元件,在測試影片時(shí)就能夠看到了。顯示對(duì)象,在AS3.0中實(shí)際上就是一個(gè)能夠看得見的元素,他可以是文本區(qū)域,圖形,按鈕,或者像彈出菜單式的界面。顯示對(duì)象里面還可以包含其他的顯示對(duì)象,例如,在國際象棋游戲中,一個(gè)顯示對(duì)象會(huì)包含所有的部分,棋盤是底部的一個(gè)顯示對(duì)象,舞臺(tái)也是一個(gè)顯示對(duì)象。下面給出這三行代碼,可以把它粘帖到第1幀中代替以前的那一行代碼:var myText:TextField=new TextField();myText.text=Hello World;addChild(myText);首先,先創(chuàng)建了一個(gè)TextField類型的變量,然后把“Hello World”賦值給這個(gè)變量,最后在把它添加到舞臺(tái)上就完成任務(wù)了。注:var是一個(gè)關(guān)鍵字,用來聲明變量,變量的數(shù)據(jù)類型寫在冒號(hào)的后面,如果要賦值的話,值得數(shù)據(jù)類型必須要和數(shù)據(jù)類型一致。然后,選擇控制,測試影片,你就能夠在影片的左上部發(fā)現(xiàn)trace()出來的結(jié)果。因?yàn)槲覀儧]有設(shè)置文本的任何格式,所以才會(huì)在影片的左上部出現(xiàn)軟件默認(rèn)的設(shè)置值。隨著我們學(xué)習(xí)的深入,我們還可以設(shè)置文本的位置,大小,字體等格式。創(chuàng)建一個(gè)AS3.0類文件如果我們沒有特別需求的話,不會(huì)在時(shí)間軸上寫代碼,而是在大多數(shù)時(shí)候,把代碼都寫到類文件中。下面,就讓我們用外部類建立一個(gè)Hello World程序吧_首先,選擇“文件”“新建”-“ActionScript 文件”,點(diǎn)擊確定后創(chuàng)建一個(gè)腳本文件。我們可以看到,該文件與fla文件有很大不同,他沒有時(shí)間軸和舞臺(tái)工作區(qū)了,整個(gè)界面都是腳本編輯區(qū)域。下面,我們嘗試著用類文件寫這個(gè)程序,你也可以先打開源文件看一下這個(gè)格式:代碼如下:package import flash.display.MovieClip; import flash.text.TextField /* * . * author 璀璨星晨 */ public class DebugExample extends MovieClip public function DebugExample() for (var i:int = 0; i “屬性”,在文檔類后面的區(qū)域輸入剛才的類名HelloWorld3,好了,現(xiàn)在可以打開控制測試影片了。在這里,系統(tǒng)就會(huì)自動(dòng)編譯這個(gè)類文件,對(duì)文檔類進(jìn)行初始化,執(zhí)行構(gòu)造函數(shù)里面的語句,并將“”Hello World的文本顯示到舞臺(tái)上。1.3Flash CS3的使用 本節(jié)主要介紹了顯示對(duì)象,顯示列表,舞臺(tái),庫和時(shí)間軸等。顯示對(duì)象和顯示列表顯示對(duì)象就是可以在舞臺(tái)上顯示的對(duì)象,包含可以直接看到的文本,圖形,視頻和圖片等內(nèi)容。所有顯示對(duì)象類都是DisplayObject類的子類。另外,顯示對(duì)象容器也可以作為一種特殊類型的看不到的顯示對(duì)象,在它的內(nèi)部還可以包含子顯示對(duì)象。顯示列表:由Flash Player呈現(xiàn)給屏幕內(nèi)容的顯示對(duì)象的層次結(jié)構(gòu),舞臺(tái)是顯示列表的根,附加到舞臺(tái)或其子級(jí)上的所有顯示對(duì)象構(gòu)成了顯示列表。當(dāng)然,在列表中,也包括位于舞臺(tái)邊界以外的對(duì)象。在這里,作者主要介紹了MovieClip和Sprite。其中MovieClip通常是由Flash繪制工具創(chuàng)建出來的,因?yàn)槔L制工具創(chuàng)建出來的是含有時(shí)間軸的影片,而只有MovieClip才擁有和時(shí)間軸相關(guān)的屬性和操作。但是,在AS3.0中,MovieClip的重要性已經(jīng)不如以前了。在以后編寫程序的過程中,我們使用最多的就是sprite類,可以把它看成去掉時(shí)間軸的MovieClip,它含有g(shù)raphic方法,可以直接在自身繪圖,還可以包含子顯示對(duì)象。舞臺(tái)舞臺(tái)是Flash中的主繪圖區(qū),它就是在游戲播放時(shí)我們看到的部分。我們?cè)谥谱饔螒驎r(shí),可以在舞臺(tái)上繪制元件,還可以把庫中的元件拖放到舞臺(tái)上。庫庫是存儲(chǔ)和組織在 Flash 中創(chuàng)建的各種元件的地方,它還用于存儲(chǔ)和組織導(dǎo)入的文件,包括位圖圖形、聲音文件和視頻剪輯。 在庫中可以組織文件夾中的庫項(xiàng)目,查看項(xiàng)目在文檔中使用的頻率,并按類型對(duì)項(xiàng)目排序。時(shí)間軸時(shí)間軸用于組織和控制一定時(shí)間內(nèi)的圖層和幀中的文檔內(nèi)容。 與膠片一樣,F(xiàn)lash 文檔也將時(shí)長分為幀。 圖層就像堆疊在一起的多張幻燈膠片一樣,每個(gè)圖層都包含一個(gè)顯示在舞臺(tái)中的不同圖像。 時(shí)間軸的主要組件是圖層、幀和播放頭。文檔中的圖層列在時(shí)間軸左側(cè)的列中。 每個(gè)圖層中包含的幀顯示在該圖層名右側(cè)的一行中。 時(shí)間軸頂部的時(shí)間軸標(biāo)題指示幀編號(hào)。 播放頭指示當(dāng)前在舞臺(tái)中顯示的幀。 播放文檔時(shí),播放頭從左向右通過時(shí)間軸。時(shí)間軸狀態(tài)顯示在時(shí)間軸的底部,它指示所選的幀編號(hào)、當(dāng)前幀頻以及到當(dāng)前幀為止的運(yùn)行時(shí)間。1.4腳本編輯區(qū)在創(chuàng)建游戲時(shí),雖然Flash文檔窗口對(duì)我們來說是很重要的,但是讓我們花費(fèi)大量時(shí)間的地方還是在動(dòng)作面板中腳本編輯區(qū)。我們?cè)谇懊嬲鹿?jié)中已經(jīng)看到過這個(gè)編輯區(qū),但是下面的這個(gè)卻有些不同,因?yàn)樵谧筮呌幸粋€(gè)AS3.0的分層菜單(也就是工具箱)。我們可以通過鍵盤上的【F9】鍵或者選擇窗口動(dòng)作面板菜單命令,打開上面的腳本編輯區(qū),在該區(qū)的上部,軟件為我們提供了很多在代碼編寫過程中需要用到的輔助功能:將新項(xiàng)目添加到腳本中:顯示AS工具箱中具有的所有語言元素,從語言元素的分類列表中選擇一項(xiàng)添加到腳本中。查找:在AS編輯區(qū)中查找和替換文本;語法檢查:檢查當(dāng)前AS編輯器中的代碼是否存在語法錯(cuò)誤,如果有語法錯(cuò)誤將在輸出面板準(zhǔn)中顯示出來。自動(dòng)套用格式:設(shè)置AS的格式以實(shí)現(xiàn)正確的編碼語法和更好的可讀性,可以在首選參數(shù)對(duì)話框中設(shè)置自動(dòng)套用格式的首選參數(shù),從編輯菜單或通過動(dòng)作面板彈出的菜單可以訪問此對(duì)話框。顯示代碼提示:顯示正在編寫的代碼行的代碼提示,這個(gè)功能在所有的按鈕中是最有用的。例如當(dāng)你在編寫程序時(shí),當(dāng)你輸入到gotoAndStop(,你立即就會(huì)看到這個(gè)方法接受什么參數(shù)以及參數(shù)類型,這是不是很方便???_調(diào)試選項(xiàng):調(diào)試代碼時(shí)用來添加或移除斷點(diǎn)。折疊成大括號(hào):折疊括號(hào)中的代碼。折疊選項(xiàng):當(dāng)你選中多行代碼時(shí),點(diǎn)擊該按鈕,你就會(huì)發(fā)現(xiàn)這些代碼自動(dòng)折疊成一行了,如果想恢復(fù)的化,可以雙擊該行的。按住Alt鍵,可以折疊未選中的代碼。展開全部:展開以上方式折疊的全部代碼應(yīng)用塊注釋:把所選的代碼轉(zhuǎn)化為塊狀注釋應(yīng)用行注釋:把所選的代碼轉(zhuǎn)化為行注釋取消注釋:取消所選代碼的注釋標(biāo)記顯示/隱藏工具箱:顯示/隱藏動(dòng)作面板左側(cè)的工具箱另外,在腳本編輯區(qū)的左邊有一列數(shù)字,它是用來標(biāo)識(shí)縮寫代碼的行數(shù)。當(dāng)我們?cè)跍y試影片出現(xiàn)錯(cuò)誤時(shí),將會(huì)在編譯器錯(cuò)誤報(bào)告中顯示出錯(cuò)誤代碼的行數(shù),描述等,這樣可以保證我們能夠很快的找到錯(cuò)誤代碼。1.5 ActionScript游戲編程策略在游戲編程中要注意一下幾點(diǎn):逐步逼近原則無論是初學(xué)者還是有一定經(jīng)驗(yàn)的編程人員,在寫代碼時(shí)都會(huì)碰到這樣的問題,我不清楚這個(gè)工程的代碼是怎樣編寫出來的。例如,一個(gè)程序員想制作一艘太空飛船,要求就是當(dāng)按住方向鍵時(shí),出現(xiàn)旋轉(zhuǎn)效果。對(duì)于這個(gè)任務(wù),其關(guān)鍵點(diǎn)就是:當(dāng)按住左方向鍵時(shí),在飛船的rotation屬性減去某一角度;相反,當(dāng)你按住了右方向鍵是,則要在飛船的rotation屬性中加上某一角度即可。把它分開來思考就是這么簡單很多初學(xué)者在開始會(huì)覺得比較困難,他們總認(rèn)為自己不能夠制作一個(gè)完整的游戲,因?yàn)樗雌饋硎欠浅5膹?fù)雜。但是,如果你把它分成小塊的話,一次就設(shè)計(jì)一小塊,最后,你就可以完整地創(chuàng)建出任何游戲。用好注釋:當(dāng)你書寫代碼的時(shí)候,在適當(dāng)?shù)匚恢眉由献⑨屖欠浅S斜匾模F(xiàn)在看起來好像是額外工作。但是,你過幾個(gè)月后再返回來看這些代碼時(shí),就會(huì)發(fā)現(xiàn)加上的這些注釋都非常有用。一般來說,注釋分為行注釋和塊注釋,行注釋的內(nèi)容比較少,一般放在行代碼的前面或后面;而塊注釋的內(nèi)容就比較多了,一般用一個(gè)或者幾個(gè)句子來說明,它放在一個(gè)函數(shù)或者一個(gè)代碼塊的前面。例如:someActionScriptCode();/這是一個(gè)行注釋/這是一個(gè)行注釋someActionScriptCode();/*這是一個(gè)塊注釋塊注釋比較長并且還包含下面代碼的一段描述*/另外,需要注意的就是,注釋一定要簡潔明了,也不要簡單的重述代碼中體現(xiàn)出來的內(nèi)容。例如,下面這行注釋就沒有多大意義了:/循環(huán)10次for(var i:int=0;i10;i+)變量和函數(shù)名稱的使用不要擔(dān)心函數(shù)名或者變量名過長不好理解,恰恰相反,使用描述性的變量名和函數(shù)名,還能夠起到事半功倍的效果,因?yàn)樗陨砭涂梢宰鳛槊枋鲂缘恼f明,比如: public function putStuff() for(var i:int=0;i1;i+) var a:Ting=new Ting(); a.x=i*10 a.y=300 addChild(a)這段代碼是干什么的?它看起來好像是復(fù)制了10個(gè)影片剪輯并添加到舞臺(tái)上了,但是這個(gè)影片剪輯具體是什么東西,它有什么用途?我們并不知道。下面,我們?cè)倏匆幌逻@段代碼的另一種方式: public function placeEnemyCharacters() for(var enemyNum:int=0;enemyNum9) removeEventListener(Event.ENTER_FRAME,creatCircle)1.6腳本基本概念本節(jié)主要講述了變量的聲明和使用,條件語句,循環(huán)和函數(shù)等基本概念。變量的聲明和使用在ActonScript3.0中,如果你初次使用變量,那么要用var關(guān)鍵字來聲明一個(gè)變量,變量后面如果不加數(shù)據(jù)類型的話,就被歸為未聲明類型;一般建議變量后面跟上數(shù)據(jù)類型,以便在賦值的過程中保證值的數(shù)據(jù)類型和變量的數(shù)據(jù)類型一致。var myValue:int=7var myValue:Number=7.8int為有符號(hào)的整型數(shù),有正負(fù)之分;uint是一大于0的正整數(shù);如果你想聲明帶小數(shù)點(diǎn)的值,可以選擇Number類型。另外,還有String和Boolean數(shù)據(jù)類型,String類型來保存文本,Boolean類型的值為true或false。上面這些是基元數(shù)據(jù)類型,可是,還包括數(shù)組等。另操作運(yùn)算符的使用在處理數(shù)據(jù)運(yùn)算是也有至關(guān)重要的作用。下面是加減乘除的一些示例:var myNumber:Number=7.8+2var myOtherNumber:int=5-6var myAnotherNumber:Number=myNumber*3var myNextNumber:Number=myNumber/myOtherNumber 補(bǔ)充:可以在上面代碼的下面加上trace()函數(shù),以便觀察計(jì)算結(jié)果trace(myNumber)trace(myOtherNumber)trace(myAnotherNumber)trace(myNextNumber)/*輸出9.8-129.400000000000002-9.8*/ 另外,你還可以用,運(yùn)算符來簡化一些運(yùn)算,為遞增,為遞減myNumber+你還可以用+=,-=,*=和/=算術(shù)賦值運(yùn)算符來處理數(shù)據(jù),例如,下面的運(yùn)算會(huì)使變量加上7myNumber+=7你還可以用()來設(shè)置這個(gè)運(yùn)算符優(yōu)先級(jí)順序var myNumber:Number=(3+7)*2 trace(myNumber)/*輸出:20*/ 另外,String類型的值也可以應(yīng)用,運(yùn)算符,例如var myString:String=Hellovar myOtherString:String=myString+WorldmyAnotherString+=World trace(myString);/該行放在第一行代碼的下面/此兩行放在上面代碼的最后即可trace(myOtherString);trace(myString);/*輸出:HelloHelloWorldHelloWorld*/ 當(dāng)我們?cè)陬愔新暶髯兞亢?,這個(gè)變量就成為這個(gè)類的屬性了,我們還可以在聲明變量的關(guān)鍵字前面加上public或private等訪問控制符,其區(qū)別就是private不能夠被該類以外的代碼訪問。條件語句在ActionScript語言中,if語句的功能和在其他編程語言中的作用是一樣的if(myValue=1)doSomeThing()()內(nèi)的語句為條件表達(dá)式,如果它的值為真,執(zhí)行內(nèi)的流程語句;如果條件不成立,則為假,不執(zhí)行流程語句。上面的條件是用=來檢驗(yàn)左右兩邊的值或表達(dá)式是否相等的,另外還可以用,=,=來判定。在if結(jié)構(gòu)中,你還可以添加else和else if來擴(kuò)展功能if(myValue=1)doSomethig()else if(myValue=2)doSomethingElse()elsedoNothing()在上面的條件表達(dá)式中,還可以用邏輯運(yùn)算符&和|等來綜合運(yùn)算。if(myValue=1)&(myString=This)doSomething()循環(huán)循環(huán)一般在for語句或者while語句中執(zhí)行for語句的循環(huán)條件有三個(gè)要素,分別是循環(huán)變量設(shè)置初始值,循環(huán)條件表達(dá)式,改變循環(huán)變量值的語句。例如,下面的代碼聲明變量i并賦值為0,條件是小于10,并且每一次遞增一來改變。for(var i:int=0;i10;i+)doSomething()你還可以在循環(huán)體內(nèi)用break和continue來控制循環(huán)流程。break用來直接跳出循環(huán),不再執(zhí)行循環(huán)體內(nèi)后面的語句;continue只是終止當(dāng)前這一輪的循環(huán),直接跳到下一輪循環(huán),在這一輪循環(huán)中,循環(huán)體內(nèi)continue后面的語句也不會(huì)被執(zhí)行。 補(bǔ)充:可以用以下代碼測試break和continue控制循環(huán)流程的作用/使用break退出循環(huán)for (var i:int=0; i10; i+) if (i=3) break; trace(當(dāng)前數(shù)字:t+i);/*輸出當(dāng)前數(shù)字: 0當(dāng)前數(shù)字: 1當(dāng)前數(shù)字: 2/由以上輸出可以看出,當(dāng)i3時(shí),break跳出循環(huán)體,并且終止了循環(huán)。*/continue跳出當(dāng)前的循環(huán)把上面代碼塊中的break改為continue后,測試結(jié)果如下:/*輸出當(dāng)前數(shù)字:0當(dāng)前數(shù)字:1當(dāng)前數(shù)字:2當(dāng)前數(shù)字:4當(dāng)前數(shù)字:5當(dāng)前數(shù)字:6當(dāng)前數(shù)字:7當(dāng)前數(shù)字:8當(dāng)前數(shù)字:9*/由上面的輸出可以看出,當(dāng)i3時(shí),continue后面的語句沒有執(zhí)行,而是直接跳轉(zhuǎn)到下一輪循環(huán),直到循環(huán)條件結(jié)束。 while循環(huán)表示:當(dāng)滿足條件表達(dá)式的時(shí)候再執(zhí)行循環(huán)體var i:int=0while(i10)i+do.while循環(huán),先判斷是否符合循環(huán)條件,然后在執(zhí)行循環(huán)體,與while唯一不同的就是dowhile循環(huán)體至少要執(zhí)行一次var i:int=0doi+while(i10)函數(shù)在AS3.0中,在創(chuàng)建函數(shù)之前,你必須要先聲明這個(gè)函數(shù),包括他里面包含的參數(shù),返回值等,然后才能夠調(diào)用。如果在類中的話,你也要用到public或者private等訪問控制說明符。private函數(shù)不能夠被外部類訪問,我們?cè)诒緯v解單類游戲的方法中,大部分用到的都是private類??聪旅孢@個(gè)示例,如果你把這個(gè)函數(shù)寫在主時(shí)間軸時(shí),我們就要去掉private關(guān)鍵字了。private function myFunction(myNumber:Number,myString:String):Booleanif(myNumber=7)return trueif(myString.length3) return truereturn false如果函數(shù)里面的參數(shù)是7或者字符串的位數(shù)小于三位,該函數(shù)值就返回true。1.7測試和調(diào)試代碼本節(jié)主要講述了在什么時(shí)候需要用到調(diào)試程序來調(diào)試代碼,并對(duì)調(diào)試控制面板的功能進(jìn)行了一一介紹。 在下面三種情況下需要調(diào)試代碼:第一,flash在編譯或運(yùn)行代碼時(shí),出現(xiàn)了錯(cuò)誤信息。例如變量拼寫錯(cuò)誤等,這時(shí)你就需要用到調(diào)試功能調(diào)試;第二,程序沒有按照預(yù)想的運(yùn)行。例如,應(yīng)該運(yùn)動(dòng)的對(duì)象沒有運(yùn)動(dòng),用戶不能在文本中輸入內(nèi)容或者在游戲中,英雄的子彈命中敵人后不能被打死。像這類錯(cuò)誤也需要用到調(diào)試功能。第三,通過調(diào)試來改進(jìn)你的代碼。你可以通過調(diào)試來找到這個(gè)低效率的代碼。調(diào)試代碼的幾種方法你可以通過幾種不同的方法來調(diào)試你的代碼,最簡單的就是通過你的大腦計(jì)算出來,例如下面這幾行代碼:var myNumber:int=7myNumber+=3myNumber*=2myNumber+上面,你不用運(yùn)行代碼就知道該變量結(jié)果是21如果代碼比較長,計(jì)算比較復(fù)雜的話,用trace()方法??梢栽谙旅婕尤胍恍校簍race(myNumber)用調(diào)試器來調(diào)試代碼例如,如果你編寫了一組 if.else if 語句且無法確定在執(zhí)行哪一條語句,那么,你就可以在語句前添加斷點(diǎn)然后再在調(diào)試器中逐句檢查這些語句(跟蹤它們)。設(shè)置斷點(diǎn) 您可以在動(dòng)作面板、“腳本”窗口或者“調(diào)試器”中設(shè)置斷點(diǎn)。 在“動(dòng)作”面板中設(shè)置的斷點(diǎn)會(huì)保存在 FLA 文件中。 在調(diào)試器和“腳本”窗口中設(shè)置的斷點(diǎn)不會(huì)保存在 FLA 文件中,并且只在當(dāng)前的調(diào)試會(huì)話中有效。 重要說明: 如果在動(dòng)作面板或“腳本”窗口中設(shè)置了斷點(diǎn)并單擊“自動(dòng)套用格式”,請(qǐng)檢查您的斷點(diǎn)。 如果“自動(dòng)套用格式”命令刪除了空行,則您的 ActionScript 可能已移到另一行。 設(shè)置斷點(diǎn)前最好對(duì)您的腳本執(zhí)行自動(dòng)套用格式操作。另要注意。不要在注釋或空行上設(shè)置斷點(diǎn),在此處設(shè)置的斷點(diǎn)將被忽略。單步調(diào)試代碼在腳本中設(shè)置斷點(diǎn)后單擊調(diào)試器中的“繼續(xù)”,便可以跟蹤代碼行,即控制調(diào)試器如何在語句和函數(shù)中移動(dòng)。例如,在下面的 ActionScript 3.0 代碼中,如果將第一個(gè)斷點(diǎn)設(shè)置在13行showNumber(i) 代碼上,調(diào)試影片時(shí),flash player會(huì)自動(dòng)運(yùn)行到showNumber(i)時(shí)停止,如果單擊“跳入”,調(diào)試器將進(jìn)入第 17 行,再次單擊“跳入”將進(jìn)入第18 行。1.package2.3.import flash.display.MovieClip;4.import flash.text.TextField5./*6.author 璀璨星晨7.*/8.public class DebugExample extends MovieClip9.10.public function DebugExample()11.12.for (var i:int = 0; i 發(fā)布設(shè)置,在發(fā)布設(shè)置有格式,F(xiàn)lash和HTML三個(gè)標(biāo)簽。格式選項(xiàng)卡發(fā)布設(shè)置決定發(fā)布flash動(dòng)畫時(shí)使用哪種導(dǎo)出格式。默認(rèn)情況下flash CS3導(dǎo)出一個(gè)swf文件和一個(gè)包含swf的HTML文件;GIF,JPEG和PNG為圖片格式;windows放映格式和 Macintosh放映格式為嵌入flash播放器的exe(Windows系統(tǒng))和app(Macintosh系統(tǒng))。Flash選項(xiàng)卡版本:用于指定發(fā)布影片的Flash player的版本加載順序:首幀所有層的下載方式,哪些內(nèi)容將在影片下載時(shí)首先出現(xiàn),該選項(xiàng)只影響首幀ActionScript版本:影片所用的ActionScript所用的版本,單擊右側(cè)的設(shè)置按鈕,可以指定本影片所用的類文件包的路徑,以及警告模式與嚴(yán)謹(jǐn)模式的設(shè)置。生成大小報(bào)告:生成一個(gè)報(bào)告,按文件列出最終 Flash 內(nèi)容中的數(shù)據(jù)量。忽略 Trace 動(dòng)作: 使 Flash 忽略當(dāng)前 SWF 文件中的 Trace 動(dòng)作 (trace)。 如果選擇該選項(xiàng),“跟蹤動(dòng)作”的信息不會(huì)顯示在“輸出”面板中。防止導(dǎo)入: 防止其他人導(dǎo)入 SWF 文件并將其轉(zhuǎn)換回 FLA 文檔。 可使用密碼來保護(hù) Flash SWF 文件。允許調(diào)試: 激活調(diào)試器并允許遠(yuǎn)程調(diào)試 Flash SWF 文件。 可讓您使用密碼來保護(hù) SWF 文件。壓縮影片: (默認(rèn))壓縮 SWF 文件以減小文件大小和縮短下載時(shí)間。 當(dāng)文件包含大量文本或 ActionScript 時(shí),使用此選項(xiàng)十分有益。 經(jīng)過壓縮的文件只能在Flash Player 6 或更高版本中播放。針對(duì) Flash Player 6 r65 優(yōu)化: 如果在“版本”彈出菜單中選擇了 Flash Player 6,則選擇此選項(xiàng)可以將版本指定為 Flash Player 6。 更新的版本使用ActionScript 注冊(cè)分配來提高性能。 用戶必須擁有 Flash Player 6 或更高版本。導(dǎo)出隱藏的圖層: (默認(rèn))導(dǎo)出 Flash 文檔中所有隱藏的圖層。 取消選擇“導(dǎo)出隱藏的圖層”將阻止把生成的 SWF 文件中標(biāo)記為隱藏的所有圖層(包括嵌套在影片 剪輯內(nèi)的圖層)導(dǎo)出。 這樣,您就可以通過使圖層不可見來輕松測試不同版本的 Flash 文檔。導(dǎo)出 SWC: 導(dǎo)出 .swc 文件,該文件用于分發(fā)組件。 .swc 文件包含一個(gè)編譯剪輯、組件的 ActionScript 類文件,以及描述組件的其它文件。JPEG品質(zhì):flash對(duì)文件中的位圖圖像使用JPEG格式進(jìn)行壓縮,壓縮量越大,文件越小,圖片質(zhì)量越差,如果發(fā)布的影片中不包含位圖圖像,該設(shè)置無效。音頻流和音頻事件:指定播放時(shí)的流式聲音和事件聲音的采樣率和壓縮方式。這些設(shè)置僅對(duì)影片中尚未指定事件屬

溫馨提示

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

評(píng)論

0/150

提交評(píng)論