AIR Android:創建棋子類Grid
像往常一樣編寫ActionScript代碼
打開FlashDevelop(FD),創建項目FlipIt,FD會自動創建主程序Main類。不要急于編寫主程序,為了讓程序的結構更合理,可以先將其中某些功能分離出來,增強代碼的靈活性。在這個游戲中,可以獨立出來的一個對象就是棋子。
創建棋子類Grid
棋子是構成棋盤的基礎。從面向對象編程的角度分析,每個棋子的使用方法完全相同,都支持翻轉變色,每個棋子有自己的狀態,不同的狀態決定了其顏色。換句話說,棋子這個對象包含了一個處理翻轉行為的方法和一個存放自身狀態的屬性。
根據上面的分析創建Grid類來表示棋子,如代碼清單2-1所示。
代碼清單2-1 棋子Grid類
- package
- {
- import flash.display.Graphics;
- import flash.display.Sprite;
- public class Grid extends Sprite
- {
- //棋子的值
- private var _value:Boolean;
- //圓的半徑
- private var _radius:int;
- //id,即棋子在地圖上的位置,用來尋找周圍的棋子
- public var id:int;
- public function Grid( value:Boolean = false, radius:int = 30)
- {
- _value = value;
- _radius = radius;
- //獲取初始值后,畫圓
- draw();
- }
- //翻轉棋子
- public function doFlip():void
- {
- //改變值,并重新繪制圓
- _value = !_value;
- draw();
- }
- //判斷棋子是不是白色狀態
- public function isWhite():Boolean
- {
- return _value == true;
- }
- //每次狀態變化時,都調用draw進行重繪
- private function draw():void
- {
- var g:Graphics = graphics;
- g.clear();
- //如果當前值為true,則用白色作為填充色
- if ( isWhite() )
- {
- g.beginFill(0xFFFFFF);
- }
- else
- {
- g.beginFill(0x333333);
- }
- //畫圓,并保證Sprite的注冊點在原點
- g.drawCircle(_radius, _radius, _radius);
- g.endFill();
- }
- }
- }
Grid類中沒有使用圖片素材,只是動態繪制了一個圓來代表棋子。初次創建或調用doFlip方法后,若棋子的值發生變化,都會調用draw方法重新繪制圓,并改變填充色。屬性id很重要,記錄了棋子本身在棋盤上的編號,后面我們將通過id值來尋找它四周的棋子。