




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
JIANGXINORMALUNIVERSITYJIANGXINORMALUNIVERSITY本科生畢業(yè)設計(論文)中文題目學號 姓名學院指導老師專業(yè)計算機完成時間2010.04.14摘要小游戲是一個較模糊的概念,它是相對于體積龐大的單機游戲及網(wǎng)絡游戲而言的,泛指所有體積較小、玩法簡單的游戲,通常這類游戲以休閑益智類為主,有單機版有網(wǎng)頁版,在網(wǎng)頁上嵌入的多為FLASH格式。當下小游戲主要是指在線玩的flash版本游戲,統(tǒng)稱小游戲,其實小游戲還包含單機游戲,小型游戲機等。一般游戲大小小于10m的游戲都統(tǒng)稱為小游戲,一些街機類小游戲。如植物大戰(zhàn)僵尸,合金彈頭等歸納其中,引起游戲安裝簡便,耐玩性強,無依賴性而廣受白領及小朋友的喜愛。本游戲是用FLASH做的叫做舒爾特方格的小游戲。舒爾特方格是在一張方形卡片上畫上1CM×1CM的25個方格,格子內(nèi)任意填寫上阿拉伯數(shù)字1—25的共25個數(shù)字。訓練時,要求被測者用手指按1—25的順序依次指出其位置,同時誦讀出聲,施測者一旁記錄所用時間。數(shù)完25個數(shù)字所用時間越短,注意力水平越高。本游戲稍微改進了點,可以測試玩家9格,16格,25格,36格,49格和64格的水平。本游戲采用的編程語言是ActionScript3.0。ActionScript動作腳本是遵循ECMAscript第四版的AdobeFlashPlayer運行時環(huán)境的編程語言。它在Flash內(nèi)容和應用程序中實現(xiàn)交互性、數(shù)據(jù)處理以及其他功能。ActionScript是Flash的腳本語言,與JavaScript相似,ActionScript是一種面向?qū)ο缶幊陶Z言。關鍵詞:小游戲,舒爾特方格,F(xiàn)LASH,ActionScript3.0。畢業(yè)論文聲明本人鄭重聲明:1.此畢業(yè)論文是本人在指導教師指導下獨立進行研究取得的成果。除了特別加以標注地方外,本文不包含其他人或其它機構(gòu)已經(jīng)發(fā)表或撰寫過的研究成果。對本文研究做出重要貢獻的個人與集體均已在文中作了明確標明。本人完全意識到本聲明的法律結(jié)果由本人承擔。2.本人完全了解學校、學院有關保留、使用學位論文的規(guī)定,同意學校與學院保留并向國家有關部門或機構(gòu)送交此論文的復印件和電子版,允許此文被查閱和借閱。本人授權江西師范大學政法學院可以將此文的全部或部分內(nèi)容編入有關數(shù)據(jù)庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本文。3.若在江西師范大學政法學院畢業(yè)論文審查小組復審中,發(fā)現(xiàn)本文有抄襲,一切后果均由本人承擔,與畢業(yè)論文指導老師無關。學位論文作者(簽名):年月日PAGE52目錄摘要 1第1章引言 2HYPERLINK1.1舒爾特方格詳細信息 4HYPERLINK1.2游戲設計意義以及原因 5HYPERLINK2.1ActionScript3.0技術概述 6HYPERLINK2.2面向?qū)ο?8HYPERLINK2.3FlashCS4軟件介紹 10HYPERLINK2.4FlashDevelop軟件介紹與配置 12HYPERLINK第3章游戲開發(fā)的詳細過程 16HYPERLINK3.1游戲功能的設計 16HYPERLINK3.2游戲界面的設計 17HYPERLINK第4章游戲代碼編寫 19HYPERLINK4.1制作方格類 19HYPERLINK4.2計時器的制作 24HYPERLINK4.3制作看板 26HYPERLINK4.6主類的設計 41HYPERLINK4.7細節(jié)的完善 46HYPERLINK4.8編寫代碼的小結(jié) 49HYPERLINK第5章小結(jié) 51HYPERLINK參考文獻 52HYPERLINK致謝 53第1章引言1.1舒爾特方格詳細信息以7—12歲年齡組為例,能達到26"以上為優(yōu)秀,學習成績應是名列前茅,42"屬于中等水平,班級排名會在中游或偏下,50"則問題較大,考試會出現(xiàn)不及格現(xiàn)象。18歲及以上成年人最好可達到8"的水平,25"為中等水平。舒爾特方格”不但可以簡單測量注意力水平,而且是很好的訓練方法。又是心理咨詢師進行心理治療時常用的基本方法。舒爾特表可以通過動態(tài)的練習鍛煉視神經(jīng)末梢。心理學上用此表來研究和發(fā)展心理感知的速度,其中包括視覺定向搜索運動的速度。培養(yǎng)注意力集中、分配、控制能力;拓展視幅;加快視頻;提高視覺的穩(wěn)定性、辨別力、定向搜索能力。練習的時間越長,看表所需的時間會越短。隨著練習的深入,眼球的末梢視覺能力提高,不僅初學者可以有效地拓展視幅,加快閱讀節(jié)奏,鍛煉眼睛快速認讀;而且對于進入提高階段之后,同時拓展縱橫視幅,達到一目十行、一目一頁非常有效。每表按字符順序,迅速找全所有的字符,平均1個字符用1秒鐘成績?yōu)閮?yōu)良,即9格用9秒、16格用16秒、25格用25秒。練習開始,達到不標準是非常正常的,切莫急躁。應該從9格開始練起。感覺熟練或比較輕松達到要求之后,再逐漸增加難度,千萬不要因急于求成而使學習熱情受挫。視野較寬、注意力參數(shù)較高的讀者,可以從25格開始練習。如果有興趣繼續(xù)提高練習的難度,還可以自己制作36格、49格、64格、81格的表。為了避免反復用相同的表產(chǎn)生記憶,你可以自己動手制作不同難度、不同排序的舒爾特表,規(guī)格大致為邊長20厘米的正方形,1套制作10張表。漢字一定要選擇自己熟悉的文字。①眼睛距表30~35厘米,視點自然放在表的中心;②在所有字符全部清晰入目的前提下,按順序(1~9,A~I,漢字應先熟悉原文順序)找全所有字符,注意不要顧此失彼,因找一個字符而對其他字符視而不見;③每看完一個表,眼睛稍做休息,或閉目,或做眼保健操,不要過分疲勞;④練習初期不考慮記憶因素。每天看10個表。1.2游戲設計意義以及原因當時其實只是想要做這個游戲,但是沒有想用什么做。不過恰好,這段時間在研究FLASH,F(xiàn)LASH里有自帶的編程腳本語言ActionScript3.0。是一門面向?qū)ο笳Z言,又不像C++那么復雜,于是乎就順手用FLASH寫了。這個游戲呢分幾種不同的階段,有容易,簡單,一般,困難,很難,相當難幾種。其實就是9格,16格,25格,36格,49格,64格的不同版本的舒爾特方格。這個游戲的靈感來源于網(wǎng)上一FLASH達人所寫的一個小游戲,但是他沒放出源代碼,于是乎,興之所至,就隨手做了一個這樣的自娛自樂的小游戲。主要的界面和美工是參考網(wǎng)上的,代碼和實現(xiàn)方式卻是完完全全自己構(gòu)思和獨立創(chuàng)作的。但是限于水平,做的還是不怎么樣,代碼也是亂七八糟的,沒有面向?qū)ο笳Z言的精髓在里面。這游戲說真的呢,還是有點用的。畢竟網(wǎng)上也都有很多說舒爾特方格的好處了。玩多了,對自己的大局觀,視野,記憶力,注意力都是有很大的幫助的,也可以在學習,工作之余放松下。可謂是居家旅行,工作學習必備小游戲。第2章游戲開發(fā)的技術基礎2.1ActionScript3.0技術概述ActionScript是針對AdobeFlashPlayer運行時環(huán)境的編程語言,它在Flash內(nèi)容和應用程序中實現(xiàn)了交互性、數(shù)據(jù)處理以及其它許多功能。ActionScript是由FlashPlayer中的ActionScript虛擬機(AVM)來執(zhí)行的。ActionScript代碼通常被編譯器編譯成"字節(jié)碼格式"(一種由計算機編寫且能夠為計算機所理解的編程語言),如AdobeFlashCS3Professional或Adobe®Flex?Builder?的內(nèi)置編譯器或Adobe®Flex?SDK和Flex?DataServices中提供的編譯器。字節(jié)碼嵌入SWF文件中,SWF文件由運行時環(huán)境FlashPlayer執(zhí)行。ActionScript3.0提供了可靠的編程模型,具備面向?qū)ο缶幊痰幕局R的開發(fā)人員對此模型會感到似曾相識。ActionScript3.0中的一些主要功能包括:一個新增的ActionScript虛擬機,稱為AVM2,它使用全新的字節(jié)碼指令集,可使性能顯著提高一個更為先進的編譯器代碼庫,它更為嚴格地遵循ECMAScript(ECMA262)標準,并且相對于早期的編譯器版本,可執(zhí)行更深入的優(yōu)化一個擴展并改進的應用程序編程接口(API),擁有對對象的低級控制和真正意義上的面向?qū)ο蟮哪P鸵环N基于即將發(fā)布的ECMAScript(ECMA-262)第4版草案語言規(guī)范的核心語言一個基于ECMAScriptforXML(E4X)規(guī)范(ECMA-357第2版)的XMLAPI。E4X是ECMAScript的一種語言擴展,它將XML添加為語言的本機數(shù)據(jù)類型。一個基于文檔對象模型(DOM)第3級事件規(guī)范的事件模型ActionScript3.0的腳本編寫功能超越了ActionScript的早期版本。它旨在方便創(chuàng)建擁有大型數(shù)據(jù)集和面向?qū)ο蟮目芍赜么a庫的高度復雜應用程序。雖然ActionScript3.0對于在AdobeFlashPlayer9中運行的內(nèi)容并不是必需的,但它使用新型的虛擬機AVM2實現(xiàn)了性能的改善。ActionScript3.0代碼的執(zhí)行速度可以比舊式ActionScript代碼快10倍。舊版本的ActionScript虛擬機AVM1執(zhí)行ActionScript1.0和ActionScript2.0代碼。為了向后兼容現(xiàn)有內(nèi)容和舊內(nèi)容,F(xiàn)lashPlayer9支持AVM1。雖然ActionScript3.0包含ActionScript編程人員所熟悉的許多類和功能,但ActionScript3.0在架構(gòu)和概念上是區(qū)別于早期的ActionScript版本的。ActionScript3.0中的改進部分包括新增的核心語言功能,以及能夠更好地控制低級對象的改進FlashPlayerAPI。ActionScript程序是一個指令的集合,它將被FlashPlayer,AdobeAIR或者FlashLite執(zhí)行。ActionScript程序可以用文本編輯器,F(xiàn)lexBuilder或者Flashauthoringtool編寫。為了運行一個ActionScript程序,我們必須首先使用SWF編譯器把它編譯為一個.swf文件。ActionScript3.0大體上我們可以看成是一個JAVA語法規(guī)則十分之像。如果有JAVA或者C++基礎的話,學習ActionScript3.0將會十分迅速。沒有的話也不用著急,書哪里都有,就怕你不學。比如《ActionScript3.0編程精髓》《Makingthingsmove》是兩本十分好的書。我就是看這兩本書來學習ActionScript的。好了,上面講的是一些ActionScript的基本概念。現(xiàn)在我們編寫一個ActionScript程序還需要對面向?qū)ο笥兴私?。畢竟ActionScript是一門面向?qū)ο缶幊陶Z言。 2.2面向?qū)ο竺嫦驅(qū)ο?ObjectOriented,OO)是當前計算機界關心的重點,它是90年代軟件開發(fā)的主流。面向?qū)ο蟮母拍詈蛻靡殉搅顺绦蛟O計和軟件開發(fā),擴展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應用結(jié)構(gòu)、應用平臺、分布式系統(tǒng)、網(wǎng)絡管理結(jié)構(gòu)、CAD技術、人工智能等領域。談到面向?qū)ο?,這方面的文章非常多。但是,明確地給出對象的定義或說明對象的定義的非常少——至少我現(xiàn)在還沒有發(fā)現(xiàn)。起初,“面向?qū)ο蟆笔菍V冈诔绦蛟O計中采用封裝、繼承、抽象等設計方法。可是,這個定義顯然不能再適合現(xiàn)在情況。面向?qū)ο蟮乃枷胍呀?jīng)涉及到軟件開發(fā)的各個方面。如,面向?qū)ο蟮姆治觯∣OA,ObjectOrientedAnalysis),面向?qū)ο蟮脑O計(OOD,ObjectOrientedDesign)、以及我們經(jīng)常說的面向?qū)ο蟮木幊虒崿F(xiàn)(OOP,ObjectOrientedProgramming)。許多有關面向?qū)ο蟮奈恼露贾皇侵v述在面向?qū)ο蟮拈_發(fā)中所需要注意的問題或所采用的比較好的設計方法??催@些文章只有真正懂得什么是對象,什么是面向?qū)ο?,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。首先我們要了解下傳統(tǒng)開發(fā)方法的問題。其一,軟件重用性差。重用性是指同一事物不經(jīng)修改或稍加修改就可多次重復使用的性質(zhì)。軟件重用性是軟件工程追求的目標之一。其二,是軟件的可維護性差。軟件工程強調(diào)軟件的可維護性,強調(diào)文檔資料的重要性,規(guī)定最終的軟件產(chǎn)品應該由完整、一致的配置成分組成。在軟件開發(fā)過程中,始終強調(diào)軟件的可讀性、可修改性和可測試性是軟件的重要的質(zhì)量指標。實踐證明,用傳統(tǒng)方法開發(fā)出來的軟件,維護時其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。其三是開發(fā)出的軟件不能滿足客戶需求。用傳統(tǒng)的結(jié)構(gòu)化方法開發(fā)大型軟件系統(tǒng)涉及各種不同領域的知識,在開發(fā)需求模糊或需求動態(tài)變化的系統(tǒng)時,所開發(fā)出的軟件系統(tǒng)往往不能真正滿足用戶的需要。傳統(tǒng)的方法不能構(gòu)建出很好的程序,這個時候就要用面向?qū)ο罅恕_@里先說下面向?qū)ο蟮幕靖拍?。我們舉個例子來說,假如你想自己從頭開始建造一架飛機,那么你首先要做什么?我想應該是先畫一張藍圖吧。但是事實上,我們不止畫一幅藍圖,我們要畫很多副,我們要給飛機的引擎畫,要給飛機的輪子畫,要給。。。等等。然后呢,我們根據(jù)藍圖來建造各個部件并且組裝起來。這樣才可以成為一個真正的飛機,可以飛的飛機。就像一架飛機是一組基于一幅藍圖結(jié)婚來配合動作的部件,我們的ActionScript程序的運行就是一組基于一個類(Class)集合來配合動作的對象(Object)。對象即實體,就是類的實例化,而類就是藍圖,對象的抽象化。我想大家應該可以明白什么是類什么是對象了吧。類和對象是面向?qū)ο笾凶罨镜母拍?。對象是人們要進行研究的任何事物,從最簡單的整數(shù)到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。對象具有狀態(tài),一個對象用數(shù)據(jù)值來描述它的狀態(tài)。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中類具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。類具有操作,它是對象的行為的抽象,用操作名和實現(xiàn)該操作的方法來描述。在客觀世界中有若干類,這些類之間有一定的結(jié)構(gòu)關系。通常有兩種主要的結(jié)構(gòu)關系,即一般--具體結(jié)構(gòu)關系,整體--部分結(jié)構(gòu)關系。一般——具體結(jié)構(gòu)稱為分類結(jié)構(gòu),也可以說是“或”關系,或者是“isa”關系。整體——部分結(jié)構(gòu)稱為組裝結(jié)構(gòu),它們之間的關系是一種“與”關系,或者是“hasa”關系。對象之間進行通信的結(jié)構(gòu)叫做消息。在對象的操作中,當一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。發(fā)送一條消息至少要包括說明接受消息的對象名、發(fā)送給該對象的消息名(即對象名、方法名)。一般還要對參數(shù)加以說明,參數(shù)可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。類中操作的實現(xiàn)過程叫做方法,一個方法有方法名、參數(shù)、方法體。以上就是面向?qū)ο蟮幕靖拍?,現(xiàn)在我們來說下面向?qū)ο蟮?大特性。首先,封裝性。什么是封裝性?封裝性是保證軟件部件具有優(yōu)良的模塊性的基礎。面向?qū)ο蟮念愂欠庋b良好的模塊,類定義將其說明(用戶可見的外部接口)與實現(xiàn)(用戶不可見的內(nèi)部實現(xiàn))顯式地分開,其內(nèi)部實現(xiàn)按其具體定義的作用域提供保護。對象是封裝的最基本單位。封裝防止了程序相互依賴性而帶來的變動影響。面向?qū)ο蟮姆庋b比傳統(tǒng)語言的封裝更為清晰、更為有力。其次是繼承性。繼承性是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關系。在定義和實現(xiàn)一個類的時候,可以在一個已經(jīng)存在的類的基礎之上來進行,把這個已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容,并加入若干新的內(nèi)容。繼承性是面向?qū)ο笳Z言設計語言不同于其它語言的最重要的特點,是其他語言所沒有的。在類層次中,子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為單重繼承。在類層次中,子類繼承了多個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承。在軟件開發(fā)中,類的繼承性使所建立的軟件具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創(chuàng)建工作量,增加了代碼的可重性。采用繼承性,提供了類的規(guī)范的等級結(jié)構(gòu)。通過類的繼承關系,使公共的特性能夠共享,提高了軟件的重用性。最后就是多態(tài)性。多態(tài)性是指相同的操作或函數(shù)、過程可作用于多種類型的對象上并獲得不同的結(jié)果。不同的對象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。多態(tài)性允許每個對象以適合自身的方式去響應共同的消息。多態(tài)性增強了軟件的靈活性和重用性。其實這上面講的知識滄海一粟,具體的語言設計會在詳細的設計里面講到。從以上的內(nèi)容可可以知道面向?qū)ο蟮奶匦允庆`活和重用。而如何使用面向?qū)ο笤O計的方法來設計程序,這個需要大量的練習和實踐。但是如何實踐使用AS呢,這就需要編程軟件了。上面我們已經(jīng)說過可以用FlashBulider,但是那個軟件很龐大,框架也龐大,如果我們編寫小程序的時候,只需要用到FlashCS4,FlashDevelop。下面我們就來介紹這兩款編譯軟件。 2.3FlashCS4軟件介紹我們先說說Flash的發(fā)展。在最開始Flash是屬于Micromedia這個公司的產(chǎn)品,一直到Flash8.0。而后就被Adobe給收購了,有Flash8.0轉(zhuǎn)變成FlashCS2,這個是Adobe命名屬下產(chǎn)品的慣用風格,和PhotoShopCS2一樣。FlashCS4是Adobe公司的最新版本,其實也不算最新版本,只能算比較新的版本。發(fā)行于2008-8-20,而最新的FlashCS5由于不太穩(wěn)定,所以大部分的還在用FlashCS4?,F(xiàn)在先來介紹下什么是Flash。Flash是一種創(chuàng)作工具,設計人員和開發(fā)人員可使用它來創(chuàng)建演示文稿、應用程序和其它允許用戶交互的內(nèi)容。Flash可以包含簡單的動畫、視頻內(nèi)容、復雜演示文稿和應用程序以及介于它們之間的任何內(nèi)容。通常,使用Flash創(chuàng)作的各個內(nèi)容單元稱為應用程序,即使它們可能只是很簡單的動畫。您也可以通過添加圖片、聲音、視頻和特殊效果,構(gòu)建包含豐富媒體的Flash應用程序。Flash特別適用于創(chuàng)建通過Internet提供的內(nèi)容,因為它的文件非常小。Flash是通過廣泛使用矢量圖形做到這一點的。與位圖圖形相比,矢量圖形需要的內(nèi)存和存儲空間小很多,因為它們是以數(shù)學公式而不是大型數(shù)據(jù)集來表示的。位圖圖形之所以更大,是因為圖像中的每個像素都需要一組單獨的數(shù)據(jù)來表示。要在Flash中構(gòu)建應用程序,可以使用Flash繪圖工具創(chuàng)建圖形,并將其它媒體元素導入Flash文檔。接下來,定義如何以及何時使用各個元素來創(chuàng)建設想中的應用程序。在Flash中創(chuàng)作內(nèi)容時,需要在Flash文檔文件中工作。Flash文檔的文件擴展名為.fla(FLA)。Flash文檔有四個主要部分:舞臺是在回放過程中顯示圖形、視頻、按鈕等內(nèi)容的位置。在Flash基礎中將對舞臺做詳細介紹。時間軸用來通知Flash顯示圖形和其它項目元素的時間,也可以使用時間軸指定舞臺上各圖形的分層順序。位于較高圖層中的圖形顯示在較低圖層中的圖形的上方。庫面板是Flash顯示Flash文檔中的媒體元素列表的位置。ActionScript代碼可用來向文檔中的媒體元素添加交互式內(nèi)容。例如,可以添加代碼以便用戶在單擊某按鈕時顯示一幅新圖像,還可以使用ActionScript向應用程序添加邏輯。邏輯使應用程序能夠根據(jù)用戶的操作和其它情況采取不同的工作方式。Flash包括兩個版本的ActionScript,可滿足創(chuàng)作者的不同具體需要。有關編寫ActionScript的詳細信息,請參閱"幫助"面板中的"學習Flash中的ActionScript2.0"。Flash包含了許多種功能,如預置的拖放用戶界面組件,可以輕松地將ActionScript添加到文檔的內(nèi)置行為,以及可以添加到媒體對象的特殊效果。這些功能使Flash不僅功能強大,而且易于使用。完成Flash文檔的創(chuàng)作后,可以使用"文件">"發(fā)布"命令發(fā)布它。這會創(chuàng)建文件的一個壓縮版本,其擴展名為.swf(SWF)。然后,就可以使用FlashPlayer在Web瀏覽器中播放SWF文件,或者將其作為獨立的應用程序進行播放。有關FlashPlayer的介紹,請參閱關于FlashPlayer。而以后所有的版本都是在這基礎上增加功能而不會改變架構(gòu)。如FlashCS4就是增加了很多功能。1.基于對象的動畫.使用基于對象的動畫對個別動畫屬性實現(xiàn)全面控制,它將補間直接應用于對象而不是關鍵幀。使用貝賽爾手柄輕松更改運動路徑。2.3D轉(zhuǎn)換.借助令人興奮的全新3D平移和旋轉(zhuǎn)工具,通過3D空間為2D對象創(chuàng)作動畫,您可以沿x、y、z軸創(chuàng)作動畫。將本地或全局轉(zhuǎn)換應用于任何對象。但非真正意義上的3D,層的位置關系其顯示問題。(處于頂層的圖形不會因為3D旋轉(zhuǎn)而到達底部)3.反向運動與骨骼工具.使用一系列鏈接對象創(chuàng)建類似于鏈的動畫效果,或使用全新的骨骼工具扭曲單個形狀。4.使用Deco工具和噴涂刷實現(xiàn)程序建模.將任何元件轉(zhuǎn)變?yōu)榧磿r設計工具。以各種方式應用元件:使用Deco工具快速創(chuàng)建類似于萬花筒的效果并應用填充,或使用噴涂刷在定義區(qū)域隨機噴涂元件。5.動畫編輯器.使用全新的動畫編輯器體驗對關鍵幀參數(shù)的細致控制,這些參數(shù)包括旋轉(zhuǎn)、大小、縮放、位置和濾鏡等。使用圖形顯示以全面控制輕松實現(xiàn)調(diào)整。6.元數(shù)據(jù)(XMP)支持.使用全新的XMP面板向SWF文件添加元數(shù)據(jù)??焖僦付擞浺栽鰪妳f(xié)作和移動體驗。7.動畫預設.借助可應用于任何對象的預建動畫啟動項目。從大量預設中進行選擇,或創(chuàng)建并保存自己的動畫。與他人共享預設以節(jié)省動畫創(chuàng)作時間。8.針對AdobeAIR?進行創(chuàng)作.借助發(fā)布到AdobeAIR運行時的全新集成功能,實現(xiàn)交互式桌面體驗。面向跨更多設備-Web、移動和桌面的更多用戶。9.H.264支持.借助AdobeMediaEncoder編碼為AdobeFlashPlayer運行時可以識別的任何格式,其它Adobe視頻產(chǎn)品也提供這個工具,現(xiàn)在新增了H.264支持。10.全新AdobeCreativeSuite®界面.借助直觀的面板??亢蛷棾鍪叫袨樘岣吖ぷ餍?它們簡化了您在所有AdobeCreativeSuite版本中與工具的交互。但其實這些功能在這個舒爾特方格游戲中其實沒有怎么用到,F(xiàn)LASH在這里只是起到一個美工作用,界面的設計主要靠的是FLASH,而游戲的核心成分是代碼,用的則是FlashDevelop編寫。至于為什么會用FlashDevelop編寫,主要是因為FLASH自帶的腳本編輯器實在是太爛,不僅是視覺,界面上的難看,而且功能上也是形同雞肋,極少的代碼提示,雖然對新手來說是熟悉ActionScript3.0的機會,但是如果用來編寫游戲來說,那真的是煎熬。于是乎,F(xiàn)lashDevelop就閃亮登場了。2.3FlashDevelop軟件介紹與配置FlashDevelop是一款輕量級的編譯軟件,當然那是相對于FlexBulider來說,但是相對于FlashCS4來說,F(xiàn)lashDevelop也是好過了太多。這款免費而又實用的編譯軟件。寫代碼極其的方便,代碼提示很是強大。FlashDevelop是一款基于.NET框架的編譯軟件。所以要使用FlashDevelop就要先安裝.NETframework2.0。然后下載FlashDevelop最新版,在官方網(wǎng)站information下的Releases版塊,查找最新版。下載并安裝。FlashDevelop還需要準備FlashSDK4.0,或者更高版本。FlashPlayerDebug版本也是必須的。下載完了,我們就來配置了。分別裝好FD(flashdevelop),.netframework2.0,javasdk1.6。flashSDK4.0不用裝呢·,解壓開放在自己看得見找得到的地方,如:D:\flex_sdk_4(之后有用)。FlashplayerDebug就放在flashplayer相同目錄吧。打開FD(即 FlashDevelop )開始配置,Tools->ProgrameSettings設置AS3context下的flexsdk的地址為上面你保存的地址路徑設置Flashviewer下的ExternalplayerPath為flashplayerdebug的地址。至此配置簡單完成?,F(xiàn)在開始調(diào)試了。新建一個空白項目。再新建一個MAIN函數(shù)然后寫下HELLOWORLD設置發(fā)布文件形式。要將下面的testmovie改成Externalplayer否則看不到trace。然后就按下CTRL+ENTER,開始調(diào)試吧。上面就是FlashDevelop的簡單配置,如果需要更強大的功能那么就需要安裝插件。插件網(wǎng)上有很多,但是我們現(xiàn)在用不到,就暫時只使用初始功能即可。既然我們已經(jīng)安裝好了工具,并且也基本了解AS的基本概念了。那我們開始來設計我們的小游戲了吧。第3章小游戲開發(fā)的詳細過程3.1游戲功能的設計游戲功能的設計,就是設計游戲里面有哪些功能。首先,是最基本的功能,點擊小方格,從1點到25然后游戲完成。這個時候要怎么設計呢?先定義一個初始值為1的變量a,點擊小方格->小方格作為一個對象如果被點擊返回本身值->如果正確,即小方格返回的值等于a,那么a就+1->一直到25,或者說我們定義的值加不動了,那么游戲結(jié)束。這個是最基本的邏輯,游戲里面所有的功能都要圍繞這個來展開。比如我們的小方格,如果點擊正確的話是閃綠光的,如果錯誤的話閃紅光。判定是否正確,這又要結(jié)合到上面的那個邏輯來設計。我們要一個‘開始游戲’的按鈕,點擊后開始游戲,開始游戲的標志就是計時器開始計時,即通過事件來通知。我們的計時器是一個從開始被通知要開始游戲了開始計時的類,要怎么計時呢?可以用getTimer()這個方法,這個以后會詳細說。具體的顯示如下:游戲結(jié)束后,我們要顯示我們的成績和評語,我們又要設計一個看板,用來顯示文字的。計時器返回的時間給予看板,用來顯示成績,然后判定屬于哪個級別。比如,如果點25格的等級,用時超過10小于20,看板即會出現(xiàn)如下顯示:我們也要有個‘游戲說明’的按鈕,當鼠標移動到按鈕上面的時候,我們看板顯示,并顯示游戲說明。我們還有‘選擇難度’按鈕,那個按鈕用來選擇難度。因為我們不止可以從1到25,我們還可以從1-9,從1-16,從1-36,從1-49,從1-64。限制于界面的大小我們只能這么多。我們有‘排行榜’功能,這個要用ShareObject用于存儲小批量的數(shù)據(jù)。當然,MySql也可以存儲,但是AS沒有直接連接MYSQL的類和方法,也不是說不可以連接,但是那要和PHP通信而且要裝‘阿帕奇’服務器,要開啟MYSQL管理,太麻煩了,所以就不用。具體顯示如下:要保存數(shù)據(jù)就要有保存數(shù)據(jù)的界面,為了讓保存界面的時候開始不了游戲,出不了其他的點擊事件,我們可以再保存界面上加個隔離層,如下顯示:最后我們還有一個‘聯(lián)系我’的按鈕,這個其實有沒有也無所謂,也是在最后時刻加上去的。基本的功能就在這里了。其他的大大小小的功能其實也就是這些。還有些其他的小功能,如特效之類的,都是些細化的,都是在基礎上添加的。功能就都在這里了,那么我們要開始設計界面了。 3.2游戲界面的設計游戲界面的設計是基于游戲基本功能來設計的。比如你需要什么功能,然后才知道你需要什么界面。首先,先設計按鈕。按鈕是各個功能中最多的一個。按鈕設計有兩種方法。第一,純代碼設計。用的AS自帶的方法,只屬于DisplayObject后代的一個對象的方法。如下所示:varsp:Sprite=newSprite();sp.graphics.lineStyle(1);sp.graphics.beginFill(0xffffff);sp.graphics.drawRect(0,0,100,50);sp.graphics.endFill();this.addChild(a);這個就是用代碼編寫,然后AVM渲染出來的一個小按鈕,一個長100,寬50,黑邊,顏色是白色的,當程序運行時,SP在左上角顯示。這樣用代碼編寫的話,可以減少程序的所占用的空間大小,但是外觀上就沒有用FlashCS4自定義來的美觀,自主性和方便了,但是如果習慣了用代碼編寫外觀的話,有的時候是可以比較快的。但是效果就不如用FlashCS4來的好,所以如果是想做的有獨立性的外觀的話,那么一般來說都是要用到FlashCS4來設定。如果只是想要快捷,輕量的話那么用代碼就可以滿足要求了。這是視情況而定的,沒有說必須要代碼或者必須用FlashCS4來制定,我們可以有很大的自主性。好,我們先來用FlashCS4來制定按鈕。在前面已經(jīng)提到過,界面設計和靈感其實都是來源于網(wǎng)上網(wǎng)友制作的一個Flash小游戲,所以這個按鈕外觀我也是參考網(wǎng)友的。設定之初只需要截圖,然后用PhotoShopCS3改變顏色,文字,然后轉(zhuǎn)成PNG格式的文件,再用FlashCS4打開文件,轉(zhuǎn)為元件,可按F8快捷鍵轉(zhuǎn)換,并且為之命名,然后給元件添加屬性,作為ActionScript3.0輸出,然后會提示你在本文件里面沒有同名的類,F(xiàn)lashCS4將會為你定義一個默認的類,可以引用此類。 具體過程如下所示:用PhotoShopCS3改變顏色,文字。轉(zhuǎn)成PNG格式。FlashCS4打開文件并轉(zhuǎn)為元件。給元件添加屬性,作為ActionScript3.0輸出。我們再建立一個類,用于引用我們剛做的元件。代碼如下所示:packageui{ importflash.display.MovieClip; [Embed(source="../anniu.swf",symbol="startBtn")] publicclassBtnextendsMovieClip { }}同理可以將其他的按鈕用同一種方法制作。我們做其他的按鈕也是采用同樣的步驟,方法,代碼只是改一下我們引用的字符就可以。我們還要來做按鈕欄,或者說是菜單欄,我們的按鈕,是時間顯示器都是在這里放置的。菜單欄我們不用做的像按鈕那樣,我們可以用代碼來編寫。代碼如下: this.graphics.beginFill(0x5d5d5d); this.graphics.drawRect(0,0,stage.stageWidth,80); this.graphics.endFill(); this.graphics.lineStyle(2,0xffffff); this.graphics.drawRect(2,2,stage.stageWidth-4,76);出來的效果就是這樣的。 我們也可以用代碼來編寫看板,代碼如下:privatefunctiondrawView(w:Number,h:Number):void{ this.graphics.beginFill(0x5d5d5d); this.graphics.drawRoundRect(0,0,w,h,10,10); this.graphics.endFill(); this.graphics.lineStyle(1,0xffffff); this.graphics.drawRect(5,5,w-10,h-10); }效果如下:這個時候我們已經(jīng)把大體的框架設計好了,還有一些其他功能,比如:排行榜,選擇難度的我們都可以在這基礎上添加。但是總體上是不會有什么改變的。以后的代碼編寫也都是圍繞著這些界面來展開的。下面就是詳細的代碼編寫 第4章游戲代碼編寫4.1制作方格類我們先來做核心類之一的,方格類。這里我采用貼代碼的方式,然后逐一解釋。 packagetile這里的packagetile指的是本類在包tile里面,包是為一組類設計的概念上的容器。每個包尾一個程序劃分出一個獨立的實際區(qū)域,并給該區(qū)域一個名字,成為包名。{ importflash.display.*; importflash.events.MouseEvent; importflash.filters.BlurFilter; importflash.text.TextField; importflash.text.TextFieldAutoSize; importflash.text.TextFieldType; importflash.text.TextFormat; importflash.text.TextFormatAlign; importgs.easing.Elastic; importgs.TweenMax;這里import代表著導入,后面的表示是某某包的某某類,比如說importflash.display.*;呢就是flash包里的display包的所有類,“*”代表所有的類。其他的的都是類似的意思。因為本類需要引用下面所導入的類,或者類里面的方法。 publicclassTileextendsSprite這句的意思表示Tile類繼承自Sprite,Sprite的繼承關系是這樣:Sprite->DisplayObjectContainer->InteractiveObject->DisplayObject->->Ojbect。其中Object是所有類的祖先,EventDisptcher類代表著它的子類可以發(fā)送事件。DisplayObject類代表它的子類可以顯示在Stage上,即舞臺上可以顯示出。InteractiveObject類是用戶可以使用鼠標和鍵盤與之交互的所有顯示對象的抽象基類。如果某類想要和用戶進行交互那么必須繼承此類或者此類的子類。DisplayObjectContainer類是可用作顯示列表中顯示對象容器的所有對象的基類。該顯示列表管理FlashPlayer中顯示的所有對象。DisplayObjectContainer類是可以包含子對象的所有對象的抽象基類。無法直接對其進行實例化;調(diào)用newDisplayObjectContainer()構(gòu)造函數(shù)會引發(fā)ArgumentError異常。如果繼承此類了,就可以添加Child,可以叫做是孩子。本類是繼承自Sprite的所以不僅可以添加孩子,還可以與用戶交互,即鍵盤和鼠標的交互。下面就要開始定義變量,屬性了??梢钥闯鰧傩源蠖喽际莗rivate,即私有的,私有的指可以在本類里面使用,不管是子類,還是其他的都不能調(diào)用。然后是各種類型的定義,比如_tileID代表的是每個方格的號碼,即點擊后返回的號碼,一個方格只能有一個。但是可以改變,不能直接改其屬性,因為它是私有的。_container是一個容器,用來顯示位圖的,稍后會詳細解釋。_size是方格的尺寸,_text是用于顯示方格號碼的文本對象。而下面的是用于特效的位圖。_format是用于給文本的Style定義的,格式化用。最后一個isRight是用于判定是否點擊正確,初始量為false。 privatevar_tileID:int; privatevar_container:Sprite; privatevar_size:Number=60; privatevar_text:TextField; privatevar_redBack:Bitmap; privatevar_redData:BitmapData; privatevar_greenBack:Bitmap; privatevar_greenData:BitmapData; privatevar_format:TextFormat; publicvarisRight:Boolean=true;這個是構(gòu)造,構(gòu)造也是面向?qū)ο筇赜械母拍?。?gòu)造方法或者簡稱為構(gòu)造器是一個離散的指令集合,用于初始化一個類的實例。 publicfunctionTile(id:int=0) { this._tileID=id; initTile(); }構(gòu)造里面有initTile()方法,其實可以寫進構(gòu)造里面的,但是為了便于管理和維護,我們可以單獨列出一個初始方法。 privatefunctioninitTile():void{ 首先我們先用ActionScript3.0自帶的繪圖,渲染方法繪出外觀,是一個線寬為4,顏色為0x74675E,填充顏色為空,大小為60的正方形。然后this.addChild(_container),意思即為構(gòu)造好的實例要添加_container。并且_container的初始透明度為0,即是透明的。需要注意的是初始時是透明的,如果是交互的對象,仍有交互作用。如果添加了偵聽,如有事件發(fā)生仍會反應。但是如果是some.visible=false;那么偵聽將不起作用,這點很重要,以后的程序設計有很多用到了這個特性。 _container=newSprite(); _container.graphics.lineStyle(4,0x74675E); _container.graphics.drawRect(0,0,_size,_size); this.addChild(_container); _container.alpha=0;啟用方法draw();此方法為自定義方法,用于繪出容器填充的顏色。因為在之后也有多處需要用到改變方法,所以將之定義為一個可以添加參數(shù)的方法,方便使用,重用。 draw(0xffffff,2);這里的位圖是用于修改方格的現(xiàn)實顏色的,在設計之初本想用graphics來修改,然后發(fā)現(xiàn)那樣不僅很容易出錯而且及其損耗CPU,這時候,我在網(wǎng)上亂逛的時候發(fā)現(xiàn)了一個帖子說可以用內(nèi)存換CPU,即先定義好變量,然后存儲在對象里面,需要時再拿出,這樣只要耗費內(nèi)存即可,而今大多數(shù)電腦的內(nèi)存都已經(jīng)達到1G以上,所以現(xiàn)在大多數(shù)都是用這種方法來代替純CPU運算,這樣對程序的運行效率有很大的提升。這里也是這樣做的,先定義兩個不同的BitmapData對象并實例化,一個為紅色,一個為綠色。如果正確就現(xiàn)實綠色,不正確就現(xiàn)實紅色。但是光定義BitmapData是不夠的,還需要定義裝載BitmapData的容器,這個容器就是Bitmap。因為BitmapData只是數(shù)據(jù),或者說里面只是些編碼,需要編譯,就要Bitmap編譯了。如下所示,Bitmap是一個容器,但是卻沒有交互功能。即不能用于偵聽鼠標事件和鍵盤事件。這點要注意,所以我們還要在位圖上面加一層控制層。 _redData=newBitmapData(_size,_size,false,0xff0000); _redBack=newBitmap(_redData); addChild(_redBack); _redBack.alpha=0; _greenData=newBitmapData(_size,_size,false,0x00ff00); _greenBack=newBitmap(_greenData); addChild(_greenBack); _greenBack.alpha=0;這里是實例化TextFormat對象,并且為其添加屬性, _format=newTextFormat();比如字體,是否是粗體,字號多少,排列方式,顏色。 _format.font="ComicSansMS"; _format.bold=true; _format.size=25; _format.align=TextFormatAlign.CENTER; _format.color=0x74675E;實例化_text,為其設置文本格式,可選性為false,文本的寬度,高度,所在位置,文本的類型是靜態(tài)文本,動態(tài)文本,還是普通文本,再為其添加內(nèi)容,就是_titleID的數(shù)值,最后被添加上父容器。 _text=newTextField(); _text.defaultTextFormat=_format; _text.selectable=false; _text.width=_size; _text.height=_size*3/4; _text.y=_size/2-_text.height/2; _text.type=TextFieldType.DYNAMIC; _text.text=_tileID.toString(); addChild(_text);本對象的mouseChildren設置為false,主要是為了讓文本不受電擊事件的傳播,再為本對象添加事件偵聽,都是鼠標事件,一個是鼠標劃上去,一個是鼠標劃下去。 this.mouseChildren=false; this.addEventListener(MouseEvent.ROLL_OVER,onRollOver); this.addEventListener(MouseEvent.ROLL_OUT,onRollOut); }下面兩個就是事件發(fā)生時對象所要做的反應,其中TweenMax是一個自定義類,不是ActionScript自帶的,用于緩動效果,ActionScrpt3.0雖然也有自帶的用于緩動效果的類Tween,但是不但從效果上看形同雞肋,效率上還大大不如自定義類。所以現(xiàn)今大部分都是采用自定義類,網(wǎng)上有很多那種類庫,效果都還不錯而我用的這種類庫算是比較著名的,效率高,效果好。下面的代碼的意思是_container的alpha從初始值到最終值,如functiononRollOver(e:MouseEvent):void是從0到1,而functiononRollOut(e:MouseEvent):void是從1到0,都是在0.1秒的時間內(nèi)完成的。 privatefunctiononRollOver(e:MouseEvent):void{ TweenMax.to(_container,0.1,{alpha:1}); } privatefunctiononRollOut(e:MouseEvent):void{ TweenMax.to(_container,0.1,{alpha:0}); } functiondraw(color:uint,line:int):void設計之初是用于重復變色的,但是發(fā)現(xiàn)效果不怎么好,所以又不用了,但也沒有刪掉。 privatefunctiondraw(color:uint,line:int):void{ this.graphics.clear(); this.graphics.lineStyle(line,0x5d5d5d); this.graphics.beginFill(color); this.graphics.drawRect(0,0,_size,_size); this.graphics.endFill(); }publicfunctionchange():void這個是個公共方法,用于在上級調(diào)用方法,用于特效和判定是否是點擊正確。如果是正確的就添加一個模糊濾鏡,然后綠色位圖閃爍一下。如果是錯誤的一樣要添加濾鏡,紅色位圖閃爍。完畢后,濾鏡消除。 publicfunctionchange():void{ this.filters=[newBlurFilter(3,3,1)]; if(isRight){ TweenMax.to(_redBack,0.1,{onComplete:backBegin,onCompleteParams:[_redBack],alpha:1}); }else{ TweenMax.to(_greenBack,0.1,{onComplete:backBegin,onCompleteParams:[_greenBack],alpha:1}); } } privatefunctionbackBegin(which:Bitmap):void{ TweenMax.to(which,0.2,{alpha:0}); this.filters=[]; }以下是一些getter()setter()方法,用于修改private屬性的值,或者獲得private屬性的值。 publicfunctiongetsize():int{ return_size; } publicfunctionsetsize(value:int):void{ this._size=value; } publicfunctionsettileID(value:int):void{ this._tileID=value; } publicfunctiongettileID():int{ returnthis._tileID; }重載一個公共方法,用于調(diào)試。 publicoverridefunctiontoString():String{ return"Tile"+this._tileID; }定義一個公共的銷毀方法。便于以后可以銷毀對象,釋放內(nèi)存。銷毀方法需要移除事件偵聽,移除自己的孩子。最后一句,是可以讓對象的父容器移除對象本身。 publicfunctiondistroy():void{ this.removeEventListener(MouseEvent.ROLL_OVER,onRollOver); this.removeEventListener(MouseEvent.ROLL_OUT,onRollOut); while(this.numChildren>0){ this.removeChildAt(0); } MovieClip(this.parent).removeChild(this); } }}Tile的代碼就編寫到了這里。下面我們要開始設計一個計時器類,用于計算成績。 4.2計時器的制作下面是Iclock接口,在這里其實作用不大,但是如果是大型的游戲或者大型的程序要團隊合作的話,那接口就是必須的了,現(xiàn)在只是為了屬下了接口這個應用而特意做的,無特別意義。packagetile{ publicinterfaceIClock { functionstart():void; functionstop():void; } }下面我們來說Calculagraph。Calculagraph類是繼承自Sprite并且實現(xiàn)了Iclock接口。接口是面向?qū)ο筇赜械母拍?,是用于定義一個新數(shù)據(jù)類型的一種ActionScript語言構(gòu)造,很像一個類定義一個數(shù)據(jù)類型。然而,一個類定義一個數(shù)據(jù)類型并且對它提供實現(xiàn),而一個接口只以抽象的形式定義一個數(shù)據(jù)類型,沒有對改數(shù)據(jù)類型提供實現(xiàn)。 publicclassCalculagraphextendsSpriteimplementsIClock定義對象屬性,_startTime和_passTime用于計時,_showText和_showTf用于顯示時間,_miniSecond和_second還有_minute用于返回時間。 privatevar_startTime:int; privatevar_passTime:int; privatevar_showText:TextField; privatevar_showTf:TextFormat; privatevar_miniSecond:int; privatevar_second:int; privatevar_minute:int;構(gòu)造方法里面就一個init()私有方法,主要是方便,讓構(gòu)造不會太臃腫。 publicfunctionCalculagraph() { init(); }init():void主要用于初始化,屬性初始化。 _startTime=0; _miniSecond=0; _second=0; _minute=0;_showTf文本格式,字體ComicSansMS,粗體,字號25,顏色為0xec9b42,排列方式為靠左排列。 _showTf=newTextFormat(); _showTf.font="ComicSansMS"; _showTf.bold=true; _showTf.size=25; _showTf.color=0xec9b42; _showTf.align=TextFormatAlign.LEFT;_showText顯示時間文本對象,寬度為200,默認格式為_showTf,不可選,初始文本內(nèi)容為pt00''00'00,并被添加到顯示列表。 _showText=newTextField(); _showText.width=200; _showText.defaultTextFormat=_showTf; _showText.selectable=false; _showText.text="pt00''00'00"; addChild(_showText);定義一個公共方法start(),用于讓計時器開始計時,并定義一個公共方法stop(),用于讓計時器停止計時。start()方法將計時用的屬性歸零,并且為_showText一個Event.ENTER_FRAME事件,播放頭進入新幀時調(diào)度。并且以程序的幀率為間隔,不斷地調(diào)度。 publicfunctionstart():void{ _startTime=0; _miniSecond=0; _second=0; _minute=0; _showText.addEventListener(Event.ENTER_FRAME,loop); }stop()方法移除偵聽。 _startTime=0; _showText.removeEventListener(Event.ENTER_FRAME,loop);這里的偵聽方法為loop(e:Event):void,假設_startTime等于0那么_startTime為getTimer()返回的值,getTimer()返回的是系統(tǒng)時間,是整型的數(shù)據(jù)類型。_passTime即當前時間與初始時間之差,_showText顯示的內(nèi)容是_passTime通過formatTime()返回的字符類型。 privatefunctionloop(e:Event):void{ if(_startTime==0){ _startTime=getTimer(); } _passTime=getTimer()-_startTime; _showText.text=formatTime(_passTime); }formatTime()方法用于格式化_passTime,因為_passTime只是整型,我們要顯示成分鐘:秒鐘:毫秒的格式,就必須格式化。如下算法: _miniSecond=pass-_second*1000-_minute*60*1000; if(_miniSecond>=1000){ _second++; } if(_second>=60){ _minute++; _second=_second-60; }這個時候基本的數(shù)值已經(jīng)可以確定,然后就截取我們需要顯示的,下面的是字符對象的公有方法,substr(a,b)取字符的第a位開始b個字符。隨后返回str; varstr:String="pt"+String(_minute+100).substr(1,2)+"'"+String(_second+100).substr(1,2)+"'"+String(_miniSecond).substr(0,2); returnstr;隨后定義一些getter()函數(shù),返回私有變量。 publicfunctiongetminute():int{ return_minute; } publicfunctiongetsecond():int{ return_second; } publicfunctiongetoverTime():String{ return_showText.text; } publicfunctiongettheTime():Number{ return_passTime; }計時器也制作完成了,現(xiàn)在就可以開始制作看板類了。4.3制作看板看板類就是用來顯示游戲說明的信息,最后你的成績和成績判定,還有聯(lián)系人。以下是代碼:構(gòu)造方法需要渲染界面,并添加游戲難度,設置內(nèi)容。 publicfunctionShowPanelOfMy(w:Number,h:Number,c:int){ this._count=c; drawView(w,h); initText(); setContent(); }繪圖,繪制看板外觀,灰色,帶圓角的四方形。 privatefunctiondrawView(w:Number,h:Number):void{ this.graphics.beginFill(0x5d5d5d); this.graphics.drawRoundRect(0,0,w,h,10,10); this.graphics.endFill(); this.graphics.lineStyle(1,0xffffff); this.graphics.drawRect(5,5,w-10,h-10); }初始化看板的顯示文本屬性。 privatefunctioninitText():void{ _tf=newTextFormat(); _tf.font="ComicSansMS"; _tf.bold=true; _tf.size=15; _tf.color=0xffffff; _text=newTextField(); _text.defaultTextFormat=_tf; _text.selectable=false; _text.autoSize=TextFieldAutoSize.LEFT; _text.x=50; _text.y=100; _text.width=100; _text.multiline=true; _text.text="test"; this.addChild(_text); }設置文本顯示內(nèi)容,用_mode作為判定,邏輯部分在Game類上。1代表是說明,2代表等級1,3代表等級2以此類推,6代表是聯(lián)系我。 publicfunctionsetContent():void{ _text.visible=false; switch(_mode){ case"1": _text.visible=true; _text.text="訓練時,要求被測者用手指按"+"\n"+"1—"+_count+"的順序依次指出其位置,"+"\n"+ "同時誦讀出聲,施測者一旁記錄所用時間。"+"\n"+ "數(shù)完25個數(shù)字所用時間越短,注意力水平越高。"+"\n"+ "以7—12歲年齡組為例,能達到26以上為優(yōu)秀,"+"\n"+"學習成績應是名列前茅," +"\n"+"42屬于中等水平,班級排名會在中游或偏下,"+"\n"+"50則問題較大考試會出現(xiàn)不及格現(xiàn)象"+"\n"+"18歲及以上成年人最好可達到8的水平25為中等水平。"; break;其他的以此類推,只是改一下需要顯示的文字即可。 default:break; } }設置mode,并且改變內(nèi)容。 publicfunctionsetmode(value:String):void{ this._mode=value; setContent(); }設置count,并且改變內(nèi)容。 publicfunctionsetcount(value:int):void{ this._count=value; setContent(); }這個是看板的代碼,需要和Game類相結(jié)合來看,下面就開始做Game類了。4.4Game類的編寫游戲的主要邏輯都放在Game類里面,方格被點擊與否,是否正確,錯誤了怎么辦,正確了又改怎么做,控制游戲進程,游戲完結(jié)后調(diào)度事件,調(diào)節(jié)難度的調(diào)度事件等等??梢哉f是整個游戲的骨架。定義變量,用于各種邏輯,游戲變量。 如果被添加進了舞臺則init(),如果沒有添加事件偵聽。 publicfunctionGame():void { if(stage)init(); elseaddEventListener(Event.ADDED_TO_STAGE,init); }初始化。 privatefunctioninit(e:Event=null):void {移除偵聽,創(chuàng)建DataProvider類型的arr,這是選擇難度的數(shù)據(jù)。 removeEventListener(Event.ADDED_TO_STAGE,init); arr=newDataProvider(); arr.addItem({label:"選擇",data:0}); arr.addItem({label:"入門(3)",data:3}); arr.addItem({label:"簡單(4)",data:4}); arr.addItem({label:"一般(5)",data:5}); arr.addItem({label:"有點難(6)",data:6}); arr.addItem({label:"困難(7)",data:7}); arr.addItem({label:"很難(8)",data:8});菜單欄的繪制。 this.graphics.beginFill(0x5d5d5d); this.graphics.drawRect(0,0,stage.stageWidth,80); this.graphics.endFill(); this.graphics.lineStyle(2,0xffffff); this.graphics.drawRect(2,2,stage.stageWidth-4,76); _isStart=false;各種自定義的方法,稍后解釋。 sortArr(); initTimer(); initButton(); initSome(); initPanel();添加點擊事件偵聽,當點擊了對象,偵聽方法做出反應。 this.addEventListener(MouseEvent.CLICK,onClick); }創(chuàng)建計時器,顯示在菜單上,定位坐標。 privatefunctioninitTimer():void{ _calculagraph=newCalculagraph(); addChild(_calculagraph); _calculagraph.x=490; _calculagraph.y=40; }創(chuàng)建看板,定位坐標,添加進舞臺。 privatefunctioninitPanel(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年小學英語畢業(yè)考試模擬卷(英語歌曲與童謠教學策略探究試題)
- 2025天津短期借款合同
- 2025年四方租賃合同模板
- 華東理工大學《生物藥物分析》2023-2024學年第二學期期末試卷
- 安徽省合肥市行知校2025年初三下學期中考適應性測試(二模)生物試題含解析
- 昆山杜克大學《商務智能》2023-2024學年第二學期期末試卷
- 遵義醫(yī)藥高等專科學?!缎旅襟w產(chǎn)品設計與項目管理》2023-2024學年第二學期期末試卷
- 哈爾濱學院《橋梁抗震和抗風設計》2023-2024學年第二學期期末試卷
- 邯鄲科技職業(yè)學院《西方哲學史》2023-2024學年第一學期期末試卷
- 重慶市大足迪濤校2025年初三下學期中考適應性練習(一)生物試題試卷含解析
- 第二節(jié)歐洲西部24
- 小學五年級下冊體育教案_(全冊)
- 平行四邊形的應用動點問題
- 多媒體課件制作流程圖
- 關于調(diào)整城市下水道工人和環(huán)衛(wèi)工人津貼的文件
- MT_T 695-1997 煤礦用高倍數(shù)泡沫滅火劑通用技術條件_(高清版)
- 紡織品裝飾用織物
- 深靜脈置管術護理及肝素鈉封管的意義
- 萬科房地產(chǎn)集團公司全套管理制度及流程圖
- 《商業(yè)發(fā)票》word版
- 《教案封面設計》word版
評論
0/150
提交評論