2016 - 2024

感恩一路有你

如何使用Flash代码创建中国象棋棋子

浏览量:2213 时间:2024-01-21 22:20:22 作者:采采

准备工作

首先,新建一个Flash文档,并在时间轴中设置标签为“变量”的帧。在动作面板中导入需要的类,并定义棋子上的汉字数组。例如:

```

import ;

import flash.text.TextField;

import flash.text.TextFormat;

import ;

const WORD:Array [["","帥","兵","俥","炮","仕","相","傌"], ["","將","卒","車","砲","士","象","馬"]];

```

绘制棋子的身体

在标签为“棋子身体”的帧里,写下以下代码来绘制棋子的身体,包括一个圆形和一个内嵌的黑圈:

```

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;

}

```

合成棋子

将上述绘制棋子的函数组合起来,以生成完整的棋子。此函数有返回值,为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;

}

```

制作所有的棋子

使用循环语句将所有棋子添加到棋盘边上:

```

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)); // 调用制作棋子函数

}

}

}

addChessPieces(); // 执行函数,观察效果

```

定位棋子

在标签为“定位到棋盘”的帧里写下以下代码来定位棋子,并初始化棋盘布局:

```

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的网格

who[i] [];

for (var j:uint 0; j < 9; j ) { // 行和列

var id:uint Number(map[0][i].substr(j, 1)); // 获取地图上的数据,判断要摆放哪个棋子

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(); // 运行起来,观察效果

```

从实践中得出的经验是,以上代码完全原创。作者:张志晨,创作于2012年5月25日。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。