鄭凱東
摘 要:實現(xiàn)Flash游戲的手機與PC的相互溝通和跨平臺開發(fā)是近年來一種新的游戲發(fā)展方向。文中闡述了基于Android的Flash游戲設(shè)計,并以傳統(tǒng)的飛機大戰(zhàn)為實例,采用Flash CS6做游戲圖片資源和設(shè)置面板,利用面向?qū)ο缶幊陶Z言Action Script3.0編寫代碼,使用Flash Builder構(gòu)建框架和發(fā)布游戲的安裝包。
關(guān)鍵詞:Android平臺;Flash游戲;躲避;跨平臺應(yīng)用;Flash Builder
中圖分類號:TP311.52 文獻標(biāo)識碼:A 文章編號:2095-1302(2016)09-0104-02
0 引 言
Flash是富媒體開發(fā)技術(shù),最初用來開發(fā)交互式網(wǎng)站動畫組件。Flash游戲基于矢量圖,具有體積小、傳播快、畫面美觀等特點,深受Web網(wǎng)游玩家歡迎。
Flash游戲在智能手機終端的跨平臺發(fā)展中將網(wǎng)頁版Flash游戲的特點融入移動平臺上,以其操作簡單、文件體積小、不易卡頓等特點成為移動平臺游戲的中堅力量。
Flash以流式控制和矢量技術(shù)為核心。Flash文檔的擴展名為.fla(FLA),新建或打開一個Flash文檔,呈現(xiàn)Flash游戲開發(fā)的四個主要部分:
(1)舞臺:在回放過程中顯示圖形、視頻、按鈕等內(nèi)容的位置。
(2)時間軸:用來通知Flash顯示圖形和其它項目元素的時間,也可以使用時間軸指定舞臺上各圖形的分層順序。
(3)庫面板:顯示Flash文檔中媒體元素列表的位置。
(4)ActionScript代碼:用來向文檔中的媒體元素添加交互式內(nèi)容,向應(yīng)用程序添加邏輯,根據(jù)用戶的操作采取不同的工作方式。
要在Flash中構(gòu)建應(yīng)用程序,可以使用Flash繪圖工具創(chuàng)建圖形,將其它媒體元素導(dǎo)入Flash文檔,定義如何以及何時使用各元素來實現(xiàn)應(yīng)用程序的功能。
所使用的開發(fā)工具Flash Builder是一個由Eclipse平臺擴展而成的集成開發(fā)環(huán)境(IDE),用來開發(fā)互聯(lián)網(wǎng)應(yīng)用程序(RIA)和跨平臺應(yīng)用程序,尤其是Adobe Flash平臺的應(yīng)用。
1 游戲分析與設(shè)計
本文以傳統(tǒng)的飛機大戰(zhàn)為實例,游戲主要模塊類的功能如下所示:
(1)Config用來配置游戲各種參數(shù);
(2)Control用來控制游戲流程執(zhí)行;
(3)NumPanel是計時數(shù)字顯示界面;
(4)Welcome是歡迎界面;
(5)Fail是失敗提示界面;
(6)GameScene是游戲主界面,游戲操作主要靠這個類完成。
(7)Tools是工具類,提供各種快捷功能方法。
1.1 游戲規(guī)則設(shè)計
在游戲過程中,有個數(shù)字界面以秒為單位記錄游戲時間。游戲失敗后會重新開始計時。游戲時間越長,飛機的數(shù)量和速度就會更多更快。設(shè)置的游戲參數(shù)主要是飛機的速度、數(shù)量以及速度增加的情況,根據(jù)個人情況而定。
本游戲是躲避類游戲,點擊屏幕進入游戲界面,游戲開始運行并計時。如果飛機碰撞則顯示游戲失敗,返回開始界面,再次點擊游戲可繼續(xù)進行??梢赃M入設(shè)置界面打開設(shè)置項,選擇或改變參數(shù)。設(shè)置返回后游戲繼續(xù)進行。
1.2 游戲界面設(shè)計
1.2.1 游戲失敗提示界面
Fail游戲失敗提示界面會頻繁出現(xiàn),所以做成單例來精簡游戲性能。此界面實現(xiàn)功能的流程:第一次調(diào)用時初始化該界面,一個半透明背景以及一個失敗提示文字圖片。當(dāng)調(diào)用show方法時,會控制背景和文字漸現(xiàn)出來,同時返回自己,讓調(diào)用方將自己添加到合適的容器內(nèi)。漸現(xiàn)完成后便添加鼠標(biāo)監(jiān)聽,單擊屏幕后會繼續(xù)漸隱直到消失,拋出游戲開始事件,游戲操作界面監(jiān)聽到開始事件后會重新開始游戲。
1.2.2 游戲歡迎界面
Welcome歡迎界面只出現(xiàn)一次,不必做成單例。這個類的功能是在游戲開始時,漸現(xiàn)出現(xiàn)游戲名稱,并作鼠標(biāo)事件的監(jiān)聽。此時如果點擊屏幕,會漸隱歡迎界面。漸隱結(jié)束后,將自己從父級容器中移除,同時拋出游戲開始事件。
2 游戲開發(fā)與實現(xiàn)
2.1 游戲工程創(chuàng)建
先用FlashBuilder創(chuàng)建一個游戲項目。FlashBuilder不僅支持Flash本身,還能將Flash轉(zhuǎn)換為手機游戲安裝包。游戲項目創(chuàng)建如圖1所示。
打開創(chuàng)建項目工程窗口,可在桌面上創(chuàng)建flight飛機大戰(zhàn)工程。
2.2 游戲工程的設(shè)置
游戲工程創(chuàng)建完成后,還需要把素材添加到工程中。在游戲工程文件夾中可創(chuàng)建如下三個文件夾。fla文件夾放置游戲素材的flash源文件,lib文件夾放置導(dǎo)出的swc素材,p12文件夾放置打包安卓所需要的打包證書。進入src文件夾創(chuàng)建一個assets文件夾,將其他資源圖片命名好后放到assets目錄下。回到FlashBuilder,打開工程屬性面板,將lib目錄添加到項目中,這樣工程就能引用lib下的swc文件。至此,游戲的工程設(shè)置和創(chuàng)建全部完成。
2.3 游戲的主類
Main類是游戲的主類,具體如圖2所示,同時也是游戲的執(zhí)行入口。首先需要做舞臺初始化監(jiān)聽,當(dāng)舞臺創(chuàng)建完成后才能繼續(xù)進行下一步動作。
圖2 游戲主類
2.4 游戲的流程控制類
Control是游戲的流程控制類,是一個單例,具體如圖3所示。在游戲過程中,通過這個類發(fā)出一些命令,做出相應(yīng)的改變。這個類可在游戲開始時初始化資源類的配置,然后提供一個游戲開始事件以及拋出事件的功能,最后啟動歡迎界面。因為歡迎界面只出現(xiàn)一次,所以直接與游戲操作界面疊加,用過之后直接銷毀即可。
2.5 游戲操作編程實現(xiàn)
2.5.1 檢測飛機是否發(fā)生碰撞
檢測碰撞時,需要將玩家操作的飛機和每一個敵機做碰撞檢測。當(dāng)檢測到一個碰撞后,停止游戲所有的監(jiān)聽,這樣就不能繼續(xù)操作玩家飛機,所有其它的飛機也會停止,同時添加游戲失敗提示界面。
碰撞檢測算法主要有基于距離的碰撞檢測和基于顯示對象的碰撞檢測。Flash影片剪輯里有一個內(nèi)置的方法hitTest?,F(xiàn)在它已經(jīng)被更合理地分成兩種獨立的方法,hitTestObject方法用于測試一個顯示對象(精靈、影片剪輯等)是否碰撞到另外一個,hitTestPoint方法用來檢測一個指定的點是否碰撞到一個顯示對象?;诰嚯x的碰撞檢測的基本思路是:兩個對象各做一個外接包圍圓,兩個圓心的距離如果小于兩圓半徑之和就可以判定這兩個圓發(fā)生碰撞。
2.5.2 判斷飛機要不要加速
當(dāng)前時間減去上一次速度發(fā)生變化的時間,如果這個差值大于速度變化的間隔時間,那么就表示需要加速。然后為當(dāng)前速度加上速度增加量,如果速度超出上限,可以按最大值處理。
//判斷添加飛機的間隔時間是否發(fā)生改變
3 結(jié) 語
經(jīng)過對系統(tǒng)進行測試和運行,得知游戲系統(tǒng)性能具有界面友好、操作方便、功能較完善等優(yōu)點。游戲過程中的消息響應(yīng)處理很快,且系統(tǒng)整體運行穩(wěn)定。由于開發(fā)時間等方面的原因,該系統(tǒng)還可以在游戲音效、元素類型、游戲界面美工等方面予以完善。
參考文獻
[1]趙亮,張維.基于Android技術(shù)的界面設(shè)計與研究[J].電腦知識與技術(shù),2009,5(29):8183-8185.
[2]王豐,付明棟,馮海亮,等.智能終端圖形用戶界面設(shè)計與實現(xiàn)[J].廣播電視信息,2008(8):29-31.
[3] Eith Peters.Flash ActionScript 3.0動畫教程[M].北京:人民郵電出版社,2008.
[4]靳言,姚尚朗.Google Android開發(fā)入門與實戰(zhàn)[M].北京:人民郵電出版社,2009.
[5]公磊,周聰.基于Android的移動終端應(yīng)用程序開發(fā)與研究[J].計算機與現(xiàn)代化,2008(8):85-89.