如何使用Flash代碼創(chuàng)建中國象棋棋子
準備工作首先,新建一個Flash文檔,并在時間軸中設(shè)置標簽為“變量”的幀。在動作面板中導入需要的類,并定義棋子上的漢字數(shù)組。例如:```import ;import flash.text.TextFi
準備工作
首先,新建一個Flash文檔,并在時間軸中設(shè)置標簽為“變量”的幀。在動作面板中導入需要的類,并定義棋子上的漢字數(shù)組。例如:
```
import ;
import flash.text.TextField;
import flash.text.TextFormat;
import ;
const WORD:Array [["","帥","兵","俥","炮","仕","相","傌"], ["","將","卒","車","砲","士","象","馬"]];
```
繪制棋子的身體
在標簽為“棋子身體”的幀里,寫下以下代碼來繪制棋子的身體,包括一個圓形和一個內(nèi)嵌的黑圈:
```
function body():Shape {
var man:Shape new Shape();
(0, 0xffffff);
(0xffffff);
(0, 0, 20);
();
(1);
(0, 0, 17);
return man;
}
```
繪制棋子上的漢字
在標簽為“棋子面孔”的幀里,寫下以下代碼來繪制棋子上的漢字:
```
function face(_name:String, color:uint0xff0000):TextField {
var tf:TextFormat new TextFormat();
"隸書";
26;
color;
"center";
var txt:TextField new TextField();
txt.width 30;
txt.height 30;
tf;
(tf);
txt.x -15;
txt.y -16;
txt.text _name;
return txt;
}
```
合成棋子
將上述繪制棋子的函數(shù)組合起來,以生成完整的棋子。此函數(shù)有返回值,為MovieClip類型。
```
function chessman(who:String, x:int, y:int, color:uint0xff0000):MovieClip {
var man:MovieClip new MovieClip();
man.x x;
man.y y;
(body());
(face(who, color));
return man;
}
```
制作所有的棋子
使用循環(huán)語句將所有棋子添加到棋盤邊上:
```
function addChessPieces() {
for (var i:uint 0; i < 2; i ) { // 先紅后黑
for (var j:uint 1; j < 8; j ) { // 橫向擺放
(chessman(WORD[i][j], 40 * j, 360 * i 40, i 0 ? 0xff0000 : 0x00ff00)); // 調(diào)用制作棋子函數(shù)
}
}
}
addChessPieces(); // 執(zhí)行函數(shù),觀察效果
```
定位棋子
在標簽為“定位到棋盤”的幀里寫下以下代碼來定位棋子,并初始化棋盤布局:
```
stop();
var who []; // 存放每個棋子,方便以后辨識、移動和吃子
var map [["376515673","000000000","040000040","202020202","000000000"], ["000000000","202020202","040000040","000000000","376515673"]]; // 地圖
function init() { // 初始化布局
for (var i:uint 0; i < 5; i ) { // 每一方的陣地有5*9的網(wǎng)格
who[i] [];
for (var j:uint 0; j < 9; j ) { // 行和列
var id:uint Number(map[0][i].substr(j, 1)); // 獲取地圖上的數(shù)據(jù),判斷要擺放哪個棋子
if (id > 0) { // 如果不是空地,就擺放指定的棋子
who[i][j] chessman(WORD[0][id], 40 * j, 40 * i, 0xff0000); // 繪制并定位
(who[i][j]); // 顯示出來
}
// 開始制作黑方,原理同上
id Number(map[1][i].substr(j, 1));
if (id > 0) {
who[i][j] chessman(WORD[1][id], 40 * j, 40 * i, 0x00ff00);
(who[i][j]);
}
}
}
}
init(); // 運行起來,觀察效果
```
從實踐中得出的經(jīng)驗是,以上代碼完全原創(chuàng)。作者:張志晨,創(chuàng)作于2012年5月25日。