AIR Android:創(chuàng)建棋子類Grid
像往常一樣編寫ActionScript代碼
打開FlashDevelop(FD),創(chuàng)建項目FlipIt,F(xiàn)D會自動創(chuàng)建主程序Main類。不要急于編寫主程序,為了讓程序的結(jié)構(gòu)更合理,可以先將其中某些功能分離出來,增強(qiáng)代碼的靈活性。在這個游戲中,可以獨(dú)立出來的一個對象就是棋子。
創(chuàng)建棋子類Grid
棋子是構(gòu)成棋盤的基礎(chǔ)。從面向?qū)ο缶幊痰慕嵌确治觯總€棋子的使用方法完全相同,都支持翻轉(zhuǎn)變色,每個棋子有自己的狀態(tài),不同的狀態(tài)決定了其顏色。換句話說,棋子這個對象包含了一個處理翻轉(zhuǎn)行為的方法和一個存放自身狀態(tài)的屬性。
根據(jù)上面的分析創(chuàng)建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();
- }
- //翻轉(zhuǎn)棋子
- public function doFlip():void
- {
- //改變值,并重新繪制圓
- _value = !_value;
- draw();
- }
- //判斷棋子是不是白色狀態(tài)
- public function isWhite():Boolean
- {
- return _value == true;
- }
- //每次狀態(tài)變化時,都調(diào)用draw進(jìn)行重繪
- private function draw():void
- {
- var g:Graphics = graphics;
- g.clear();
- //如果當(dāng)前值為true,則用白色作為填充色
- if ( isWhite() )
- {
- g.beginFill(0xFFFFFF);
- }
- else
- {
- g.beginFill(0x333333);
- }
- //畫圓,并保證Sprite的注冊點(diǎn)在原點(diǎn)
- g.drawCircle(_radius, _radius, _radius);
- g.endFill();
- }
- }
- }
Grid類中沒有使用圖片素材,只是動態(tài)繪制了一個圓來代表棋子。初次創(chuàng)建或調(diào)用doFlip方法后,若棋子的值發(fā)生變化,都會調(diào)用draw方法重新繪制圓,并改變填充色。屬性id很重要,記錄了棋子本身在棋盤上的編號,后面我們將通過id值來尋找它四周的棋子。