康亞明 KANG Ya-ming
(榆林學院信息工程學院,榆林 719000)
(School of Information Engineering,Yulin University,Yulin 719000,China)
隨著Internet的發展,網絡上Flash游戲隨處可見,比如益智類、動作類、體育類、棋牌類、射擊類等,它已成為主流的在線游戲。基于Flash平臺的游戲不但容量小、極易在網絡上傳播,而且利用ActionScript強大的功能可以制作出細膩、可玩性強的游戲[1-2]。但是目前Flash游戲制作同樣存在著一些問題,例如ActionScript代碼分散在Flash影片剪輯和時間軸上,導致代碼的維護困難,也很難重用;沒有一個清晰簡單的流程,增加了游戲開發的復雜度。建立一些通用的基本框架,可以大大提高游戲開發的效率,增強代碼的可讀性。
ActionScript是Flash內置的腳本語言,與JavaScript相似,它是一種面向對象的編程語言,可以使用ActionScript控制Flash中的對象,創建向導和交互元素,也可以擴展Flash,使Flash表現出強大的交互性,用戶不僅僅能觀看動畫,還能參與到動畫中[3-6]。
框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法[7],我們可以把游戲基本框架的主要結構分為狀態循環、游戲頻率和事件模型三個部分。
1.1 游戲的狀態循環 我們的游戲大概有三個狀態,一個是初始狀態,一個是游戲狀態,還有一個是游戲結束的狀態。根據游戲運行的需要來確定它的當前運行狀態,這個就是狀態循環。比如,在游戲狀態,需要等待玩家點擊按鈕,當按鈕被按下的時俳,游戲狀態轉變為結束狀態。狀態循環是游戲行為控制的交警。一個非常基本的使用方式就是使用常量和Switch方法。下面的代碼建立了幾個類中用到的狀態,這些狀態會控制游戲的流程。我們用const關鍵字來聲明它們,而且他們是一種靜態常量,可以在不用建立實例的情況下被其他類調用。
public static const STATE_INIT:int=10;
public static const STATE_PLAY:int=20;
public static const STATE_OVER:int=30;
public var gameState:int=0;//建立一個變量來保存當前游戲保持的狀態。
下面通過Switch方法來決定當前游戲應該保持哪一種狀態。
public funtion gameloop(e:EVENT){//gameloop是游戲的主要循環,它表示了游戲的頻率(后面說明)。


1.2 游戲頻率 狀態循環不斷地檢測現在游戲進行到哪一環節,根據環節的不同來采取恰當的行為。這種每隔一段時間來檢查游戲狀態的機制被稱作游戲頻率,我們可以通過ENTER_FRAME事件或Timer類(這里以ENTER_FRAME事件為例)來反復的調用gameLoop()函數,代碼如下:

1.3 事件模型 事件驅動是面向對象程序設計的基本特征之一,我們可以使用系統事件(如鼠標和鍵盤事件等)和自定義的事件來驅動游戲。如下面代碼就是給舞臺注冊了一個鼠標單擊事件處理器。

其中第一個參數是事件的名稱。然后第二個參數是事件觸發后要調用的函數名稱。
2.1 游戲名稱及功能描述 游戲名稱叫戳氣球,氣球從屏幕上方往下掉,玩家使用鼠標控制一個旋轉的切刀去戳破氣球,如果玩家漏掉5個氣球,游戲將結束。否則游戲隨著氣球被戳破玩家將得分,得分到一定數將晉級,氣球隨著等級提高,產生的數量越來越多,掉落的速度越來越快。
2.2 戲素材準備
圖片素材:氣球和切刀;
聲音素材:氣球破裂的爆炸聲。
2.3 基于本文所述框架的游戲實現(使用flash cs5.5)
2.3.1 打開flash,將氣球、切刀和聲音導入后做成元件以備使用,元件名和AS鏈接類名均為qiqiu、qiedao和bzh。
2.3.2 創建Game.as文檔類(下為主要代碼)


本文描述了一種基于ActionScript3.0的游戲設計框架,主要利用元件和文檔類來完成。充分地發揮了腳本的作用,此框架不僅使開發流程更加清晰簡單,也提高了程序的可重用性和可維護性,從而提高開發效率。該框架有很大的靈活性,在各個部分可以根據項目的實際需要進行相應的擴充變更。
[1]GaryRosenzweig.ActionScript3.0 GameProgramming University[M].QUE Publishing,2007.
[2][美]LottJ,Reinhardt R.Flash 8 ActionScript寶典[M].北京:電子工業出版社,2006.
[3]Colin Moock.ActionScript 3.0編程精髓[M].北京:機械工業出版社,2008.
[4]李松,鐘垣.Flash數據庫動態開發專業教程[M].北京:清華大學出版社,2004.
[5]莫治雄,等.閃客家園FlashMX網上動畫制作指南[M].北京:希望電子出版社,2006.
[6]姚磊岳,等.基于Flash技術動態富媒體應用程序的研究與實現[J].江西藍天學院學報,2006(3):68-71.
[7]http://baike.so.com/doc/1863840.html.