• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于AS3.0的Flash游戲設(shè)計(jì)與開(kāi)發(fā)

      2014-03-16 03:38:44彭婀娜
      電腦與電信 2014年3期
      關(guān)鍵詞:游動(dòng)水手子彈

      彭婀娜

      (廣州市公用事業(yè)技師學(xué)院,廣東 廣州 510100)

      基于AS3.0的Flash游戲設(shè)計(jì)與開(kāi)發(fā)

      彭婀娜

      (廣州市公用事業(yè)技師學(xué)院,廣東 廣州 510100)

      Flash因其靈活、方便、文件體積小等優(yōu)勢(shì)成為網(wǎng)頁(yè)游戲開(kāi)發(fā)的寵兒,其中腳本語(yǔ)言Active Script 3.0是一種完全面向?qū)ο蟮恼Z(yǔ)言,與舊版本相比,其擴(kuò)展性、可讀性更強(qiáng),編譯速度更快,性能更高。筆者嘗試使用AS 3.0編寫(xiě)“水手捕魚(yú)”網(wǎng)頁(yè)游戲,并從功能分析、游戲流程、關(guān)鍵技術(shù)等方面闡述設(shè)計(jì)思路。

      flash游戲;AS3.0技術(shù);面向?qū)ο?;游戲開(kāi)發(fā)

      1.引言

      Flash游戲是一種隨網(wǎng)絡(luò)興起的游戲形式,因其游戲簡(jiǎn)單、操作方便、無(wú)需安裝、文件體積小等優(yōu)點(diǎn)而深受廣大網(wǎng)友歡迎。在網(wǎng)絡(luò)圖像、動(dòng)畫(huà)的傳輸上,F(xiàn)lash有著得天獨(dú)厚的優(yōu)勢(shì),F(xiàn)lash player及其插件的高普及率使得flash成為網(wǎng)頁(yè)游戲開(kāi)發(fā)者的寵兒。Flash技術(shù)包含一套可編程腳本解析器,稱(chēng)為ActionScript,可以控制Flash動(dòng)畫(huà),實(shí)現(xiàn)多種交互功能,成為了絕大多數(shù)小游戲開(kāi)發(fā)的技術(shù)基礎(chǔ)。

      2.AS3.0的優(yōu)勢(shì)

      ActionScript3.0(簡(jiǎn)稱(chēng)AS3.0)是Flash新一代腳本語(yǔ)言,是一個(gè)完全基本OOP的標(biāo)準(zhǔn)化面向?qū)ο笳Z(yǔ)言。與以前的版本語(yǔ)言(AS2.0)相比,AS3代碼更加模塊化,可讀性更好,擴(kuò)展性更強(qiáng),并且新增了很多功能,性能也大大地提高。主要體現(xiàn)在以下幾個(gè)方面:

      (1)采用新一代虛擬機(jī):在編譯階段,AS2采用的是AVM1(ActionScript Virtual Machine),而 AS3采 用的是AVM2。新一代虛擬機(jī)采用了OOP思想,在執(zhí)行速度上比起AVM1也快了10倍。相對(duì)于AS2運(yùn)行出錯(cuò)需要花費(fèi)大量時(shí)間排錯(cuò)的缺陷,AVM2還提供了異常處理機(jī)制,與目前主流的編譯器一樣,運(yùn)行出錯(cuò)會(huì)輸出錯(cuò)誤提示,工作效率大大提高。

      (2)代碼規(guī)范化與標(biāo)準(zhǔn)化:AS3的事件機(jī)制采用的是監(jiān)聽(tīng)的方式,和AS2的OnClipEvent不同,AS3里所有的事件都是需要觸發(fā)器、監(jiān)聽(tīng)器、執(zhí)行器三種結(jié)構(gòu)的,這樣做的好處就是使得這個(gè)語(yǔ)言得到很大程度的規(guī)范化與標(biāo)準(zhǔn)化。不像AS2,由于編寫(xiě)不規(guī)范,使得代碼變得繁復(fù)難懂,可讀性差,執(zhí)行效率也大大降低。要特別說(shuō)明的是,AS3的所有事件都直接繼承event對(duì)象,而event是直接繼承自BOSS類(lèi)object,結(jié)構(gòu)更加緊湊。所以在AS3中,所有的事件都繼承自相同的父類(lèi),結(jié)構(gòu)相同,提高了重用性。

      (3)程序安全性提高:與以前的版本不同,AS3引入了封裝的概念,使得程序安全性大大提高,各個(gè)對(duì)象之間的關(guān)系也通過(guò)封裝,訪問(wèn)控制而得以確定,避免了不可靠的訪問(wèn)給程序帶來(lái)的意外產(chǎn)生。

      (4)讀取XML的優(yōu)化:AS2時(shí)代對(duì)XML的存取仍然需要解析,而AS3則創(chuàng)新地將XML也視作一個(gè)對(duì)象,存取XML就像存取普通對(duì)象的屬性一樣方便,可以采用訪問(wèn)標(biāo)準(zhǔn)對(duì)象中的屬性的方式來(lái)訪問(wèn)節(jié)點(diǎn)。使用點(diǎn)表示法和XMLList方法,便可以輕松獲取信息,無(wú)疑大大提高了效率。

      3.使用AS3.0開(kāi)發(fā)flash游戲的具體實(shí)踐

      本文以“水手捕魚(yú)”游戲開(kāi)發(fā)為例,探索使用AS3開(kāi)發(fā)Flash游戲的實(shí)踐過(guò)程。

      3.1 游戲的功能分析

      “水手捕魚(yú)”游戲以幾位水手商量出海捕魚(yú)賺取金幣的對(duì)話開(kāi)始,在航海地圖中選擇捕魚(yú)海域,之后選擇角色,進(jìn)入捕魚(yú)游戲主界面。游戲以五彩斑斕的海底世界為背景,其中有各種海底生物自由游動(dòng),玩家通過(guò)發(fā)射魚(yú)炮進(jìn)行捕魚(yú),在限定的時(shí)間內(nèi)使用限定的子彈數(shù)量,達(dá)到既定的分?jǐn)?shù)即為挑戰(zhàn)成功。游戲要實(shí)現(xiàn)的主要功能如下:

      (1)游戲分為快速、簡(jiǎn)單、普通、達(dá)人四人模式,每種模式的時(shí)間限制、分?jǐn)?shù)限制、子彈限制各不同;

      (2)游戲的運(yùn)行速度流暢,畫(huà)面清晰,給玩家?guī)?lái)淋漓盡致的操作快感;

      (3)移動(dòng)鼠標(biāo)可以操作大炮的左右移動(dòng),點(diǎn)擊左鍵能夠發(fā)射網(wǎng)炮,按下空格鍵可以切換魚(yú)炮的級(jí)別,級(jí)別越高威力越大,所耗子彈數(shù)越多;

      (4)呈現(xiàn)多種海洋生物自由游動(dòng),每種生物的生命力不同,分值也不同;

      (5)發(fā)射的魚(yú)炮擊中魚(yú)后,撒出魚(yú)網(wǎng),魚(yú)網(wǎng)覆蓋范圍內(nèi)的魚(yú)兒生命力會(huì)減小,直到被降為零后被捕獲;

      (6)除了自由游動(dòng)的魚(yú)之外,還有魚(yú)群魚(yú)陣隨機(jī)蜂擁而出。

      3.2 游戲的設(shè)計(jì)分析

      3.2.1“水手捕魚(yú)”游戲軟件的執(zhí)行流程如圖1所示:

      3.2.2 游戲的關(guān)鍵技術(shù)實(shí)現(xiàn)

      在“水手捕魚(yú)”游戲中,海洋生物的游動(dòng)軌跡與出現(xiàn)概率、魚(yú)炮的飛行軌跡、子彈殺傷力的級(jí)別屬性設(shè)置等是游戲?qū)崿F(xiàn)的關(guān)鍵技術(shù)。因此我們應(yīng)用了AS3.0中幾種特殊的類(lèi):

      Vector2D類(lèi)。二維向量類(lèi),提供了向量的加法、減法、與標(biāo)量的乘法、與標(biāo)量的除法、取反、克隆、置0、求長(zhǎng)度、求角度、設(shè)置長(zhǎng)度、求兩個(gè)向量距離、求兩個(gè)向量點(diǎn)積、求兩個(gè)向量叉乘、判斷兩個(gè)向量是否相等等方法。

      Vehicle類(lèi)。機(jī)車(chē)類(lèi),具有質(zhì)量、最大速率、位移、速度等屬性,其中位移和速度是向量,用Vector2D的實(shí)例來(lái)表示。該類(lèi)中有一個(gè)重要方法update(),調(diào)用該方法可以使機(jī)車(chē)根據(jù)當(dāng)前位移和速度求出新的位移,并更新與顯示有關(guān)的x、y、rotation屬性。

      SteeredVehicle類(lèi)。轉(zhuǎn)向機(jī)車(chē)類(lèi),是Vehicle類(lèi)的子類(lèi)。Vehicle類(lèi)的對(duì)象只能以一定的速度一直移動(dòng),SteeredVehicle類(lèi)的對(duì)象可以改變速度的大小和方向,具有搜尋、逃避、到達(dá)、追捕、躲避、漫游、規(guī)避、路徑追隨、群落等行為,而且運(yùn)動(dòng)軌跡自然流暢。

      在本游戲軟件中,我們編寫(xiě)的元件類(lèi)有以下幾個(gè):

      Fish類(lèi)。代表魚(yú)的類(lèi),是各種具體魚(yú)類(lèi)的父類(lèi),各種由FLASH生成的具體魚(yú)類(lèi)都繼承Fish類(lèi)。Fish類(lèi)繼承Steered-Vehicle類(lèi),因此具有代表各種轉(zhuǎn)向行為的方法,還具有魚(yú)類(lèi)型、游動(dòng)形式、生命值、遵循路徑編號(hào)等屬性。

      Bullet類(lèi)。代表子彈的類(lèi),繼承Vehicle類(lèi),因此會(huì)以恒定速度移動(dòng),還具有代表殺傷力的屬性。與FLASH中的子彈元件綁定。

      Net類(lèi)。代表魚(yú)網(wǎng)的類(lèi),具有代表殺傷力的屬性,與FLASH中的魚(yú)網(wǎng)元件綁定。

      Gun類(lèi)。代表炮的類(lèi),與FLASH中的炮元件綁定。其中的pointTo方法可使炮指向舞臺(tái)上的指定點(diǎn)。

      Coin類(lèi)。是金幣類(lèi)GoldenCoin和銀幣類(lèi)SilverCoin的父類(lèi),本身繼承Vehicle類(lèi),因此會(huì)以恒定速度移動(dòng),從而使金銀幣飛向炮臺(tái)。具有代表價(jià)值的屬性。

      AutoVanishText類(lèi)。一個(gè)能在指定時(shí)間后自動(dòng)消失的文本框類(lèi),主要用于顯示魚(yú)被打死后由于殺死該魚(yú)所得分?jǐn)?shù)。

      例如:Fish類(lèi)的結(jié)構(gòu)如下:

      public class Fish extends SteeredVehicle{

      public static const MOVE_WANDER:int=1;//魚(yú)的游動(dòng)形式之一,自由流動(dòng),是最常見(jiàn)的游動(dòng)形式

      public static const MOVE_PATH:int=2;//魚(yú)的游動(dòng)形式之一,沿固定路徑游動(dòng)

      public static const MOVE_FORWARD:int=3;//魚(yú)的游動(dòng)形式之一,魚(yú)一直向前游動(dòng),速度不變

      private var_type:int=0; //魚(yú)的類(lèi)型

      private var_moveMode:int=MOVE_WANDER;//魚(yú)的游動(dòng)形式

      private var_blood:int=1; //魚(yú)的生命值

      private var_pathId:int=0; //在MOVE_PATH模式下所遵從的路徑序號(hào)

      case MOVE_FORWARD: //什么代碼都不用寫(xiě),執(zhí)行完update()后自然會(huì)向前

      另外,我們還編寫(xiě)了用于集中管理數(shù)據(jù)的類(lèi)——Data類(lèi)。該類(lèi)有常量、變量和方法,全部都是靜態(tài)的。常量有表示舞臺(tái)高度和寬度的常量、代表各種模式編號(hào)的常量。變量主要用于容納從data.xml文件中讀入的數(shù)據(jù),這些數(shù)據(jù)包括各種魚(yú)的參數(shù)數(shù)據(jù)、各種模式的參數(shù)數(shù)據(jù)、路徑的坐標(biāo)數(shù)據(jù)、魚(yú)陣的坐標(biāo)數(shù)據(jù)。方法只有一個(gè)getRandomFishId,用于取得一個(gè)代表魚(yú)種類(lèi)的整數(shù),這個(gè)整數(shù)的出現(xiàn)規(guī)律是按照f(shuō)ishChances數(shù)組中的概率來(lái)分布的:

      public class Data {

      public static const STAGE_WIDTH:int=800;

      public static const fishChances:Array=new Array();

      ……//定義各種參數(shù)

      /*取得一個(gè)代表魚(yú)種類(lèi)的整數(shù),這個(gè)整數(shù)的出現(xiàn)規(guī)律是按照f(shuō)ishChances數(shù)組中的概率來(lái)分布的*/

      4.使用AS3.0編程技術(shù)的亮點(diǎn)

      (1)在游戲中,我們引入XML文件管理數(shù)據(jù),實(shí)現(xiàn)程序與數(shù)據(jù)之間的松耦合。魚(yú)特征參數(shù)、模式特征參數(shù)、水手描述數(shù)據(jù)、魚(yú)游動(dòng)路徑坐標(biāo)數(shù)據(jù)、魚(yú)陣坐標(biāo)數(shù)據(jù)等都放在data. xml文件中,使這些數(shù)據(jù)的增加、修改、刪除都十分方便,不需修改源代碼也不需重新編譯。

      (2)碰撞檢測(cè)的技術(shù)突破。每一幀都需要進(jìn)行魚(yú)和子彈的碰撞檢測(cè),用的是兩重循環(huán)逐個(gè)檢查的方法。如果在飛的子彈有m顆,魚(yú)有n條,則算法的時(shí)間復(fù)雜度是O(mn)量級(jí)的。在發(fā)現(xiàn)碰撞之后,會(huì)釋放漁網(wǎng),這時(shí)需要檢測(cè)漁網(wǎng)與所有的魚(yú)是否會(huì)發(fā)生碰撞。如果處理不好,時(shí)間復(fù)雜度會(huì)變成O(mn2)量級(jí),降低運(yùn)行效率。為了控制時(shí)間復(fù)雜度,在發(fā)現(xiàn)一次碰撞,釋放一個(gè)漁網(wǎng)之后,馬上退出上述的兩重循環(huán),使時(shí)間復(fù)雜度控制在O(mn)+O(n)即仍是O(mn)量級(jí)。這樣處理之后,在一幀中最多只會(huì)釋放一個(gè)漁網(wǎng)。

      (3)魚(yú)的游動(dòng)采用了人工智能范疇的轉(zhuǎn)向行為算法。所采用的轉(zhuǎn)向行為算法基于力學(xué)模型——力作用于物體產(chǎn)生加速度,加速度引起速度的逐漸改變,因此速度不會(huì)驟然劇變,從而魚(yú)的游動(dòng)能夠平順自然。

      5.結(jié)語(yǔ)

      在游戲設(shè)計(jì)過(guò)程中,我們領(lǐng)略了AS3.0強(qiáng)大的功能帶來(lái)的獨(dú)特魅力,其封裝性、靈活性給開(kāi)發(fā)工作帶來(lái)極大的便利,也使得開(kāi)發(fā)者在更多方面的發(fā)揮不受限制。隨著網(wǎng)絡(luò)的不斷發(fā)展與電子產(chǎn)品的增多,F(xiàn)lash游戲在各種終端的普及率越來(lái)越高,也使得AS技術(shù)的應(yīng)用更加廣泛,在網(wǎng)頁(yè)游戲開(kāi)發(fā)的主流地位也進(jìn)一步得以鞏固。

      [1]Keith Peters.Flash ActionScript 3.0動(dòng)畫(huà)高級(jí)教程[M].蘇金國(guó)等譯.北京:人民郵電出版社,2010.

      [2]朱冬玲.用AS3和Java開(kāi)發(fā)競(jìng)賽型多機(jī)游戲[J].福建電腦,2012,7.

      [3]adobe公司.a(chǎn)dobe flash action script 3.0中文版經(jīng)典教程[M].北京:人民郵電出版社,2009.

      [4]王愉.付震蓬.羅慧.隋涌.flash互動(dòng)游戲的開(kāi)發(fā)與設(shè)計(jì)[J].北京印刷學(xué)院報(bào),2006.8.

      [6]Jeff Fulton,Steve Fulton.The Essential Guide to Flash Games[M].USA:friendsof ED,2010.

      Design and Development of Flash Game Based onAS3.0

      Peng Enuo
      (Guangzhou Public Utility Technician College,Guangzhou 510100,Guangdong)

      tract】 Flash is applied widely in web game development because of its flexibility,convenience and small-size file.The scripting language Active Script 3.0 is fully object-oriented,which is more extensible,more readable,and has higher performance comparing to the old version.This paper uses AS 3.0 to develop the"sailor fishing"web game,and expounds the design idea from the functional analysis,the game process and the key technology.

      words】flash game;AS3.0 technology;object-oriented;game development

      彭婀娜,女,湖南攸縣人,講師,研究方向:計(jì)算機(jī)科學(xué)與技術(shù)。

      猜你喜歡
      游動(dòng)水手子彈
      永不停歇的魚(yú)
      球軸承用浪型保持架徑向游動(dòng)量的測(cè)量
      哈爾濱軸承(2021年1期)2021-07-21 05:43:16
      小水手的歌
      黃河之聲(2021年6期)2021-06-18 13:57:20
      把手放進(jìn)袋子里
      三顆子彈
      子彈VS防彈
      Karma:讓子彈飛一會(huì)兒
      半盞——第七話:水手們
      幸運(yùn)的水手
      子彈
      恩平市| 罗城| 莒南县| 安平县| 咸宁市| 延川县| 赤城县| 渑池县| 阜平县| 沾益县| 互助| 阿尔山市| 牡丹江市| 略阳县| 景东| 綦江县| 仙桃市| 尼勒克县| 阿尔山市| 竹北市| 本溪市| 阳谷县| 咸宁市| 中阳县| 颍上县| 贺州市| 渭南市| 改则县| 环江| 新泰市| 贵溪市| 伊川县| 济南市| 高密市| 莒南县| 三穗县| 崇州市| 潍坊市| 连州市| 雷波县| 陕西省|