|
200398sb40whb 中级会员
 
- 帖子
- 883
- 积分
- 159
- 技术分
- 13
- 在线时间
- 458 小时
- 注册时间
- 2004-6-17
|
1#
大 中
小 发表于 2008-5-16 15:53 只看该作者
关于统计图的类的总结
在这里,有四个统计图的类,它们分别是:(1)条形统计图;(2)折线统计图;(3)直方统计图(和条形统计图相似,很难分出区别,但人教版初中数学确确实实将他们分开);(4)扇形统计图;其中(1)(2)(3)的关系比较密切。在这里,(1)是(2)的超类,(2)又是(3)的超类,所以(1)是(2)的爸爸,(2)是(3)的爸爸,(1)是(3)的爷爷。第一次写这么啰嗦的关系,肯定有很多不完美的地方。
现在看看(1):
class:
class txtjt {
//坐标的位置
public var zb_x:Number = 80;
public var zb_y:Number = 200;
//接受 数组数据
public var sj_array:Array = new Array();
//数组数据的个数(画坐标的横坐标要用到)
public var max_x:Number;
//条形统计图的条形颜色
public var ys_array = new Array(0x000000, 0xff0000, 0x00ff00, 0x0000ff, 0xcccc66, 0x66cc00, 0xcc00ff, 0x000099, 0x003300, 0x00cc00, 0x990099, 0x000000, 0xff0000, 0x00ff00, 0x0000ff, 0xcccc66, 0x66cc00, 0xcc00ff, 0x000099, 0x003300, 0x00cc00, 0x990099);
//条形统计图的栏目
public var lx_array:Array = new Array();
public var _mc:MovieClip;
public var zb_array:Array;
//
public var d:Number = 30;
public var l:Number = 40;
public var h:Number;
public var zb_b:Boolean = false;
//建构函数
public function txtjt(_array:Array, zb_array:Array, _mc:MovieClip) {
this.lx_array = _array;
this.zb_array = zb_array;
this._mc = _mc;
this.max_x = _array.length;
}
//定义方法,找出数组中的最大值
public function max_fc():Number {
var max:Number = sj_array[0];
for (var i:Number = 0; i<sj_array.length; i++) {
max<sj_array ? max=sj_array : max=max;
}
h = 100/max;
return max;
}
//定义画图函数:
public function ht_fc(_array:Array):Void {
sj_array = _array;
zb_fc();
tx_fc();
}
//定义画出坐标轴的方法
public function zb_fc():Void {
var n:Number = 15;
max_fc();
//画坐标:
_mc.lineStyle(1, 0x000000, 100);
_mc.moveTo(zb_x, zb_y);
if (zb_b) {
_mc.lineTo(zb_x+4, zb_y-4);
_mc.lineTo(zb_x+7, zb_y+4);
_mc.lineTo(zb_x+10, zb_y);
}
_mc.lineTo(zb_x+l*max_x+d+n, zb_y);
_mc.lineTo(zb_x+l*max_x+d-5+n, zb_y-5);
_mc.moveTo(zb_x+l*max_x+d+n, zb_y);
_mc.lineTo(zb_x+l*max_x+d-5+n, zb_y+5);
_mc.moveTo(zb_x, zb_y);
_mc.lineTo(zb_x, zb_y-120);
_mc.lineTo(zb_x-5, zb_y-120+5);
_mc.moveTo(zb_x, zb_y-120);
_mc.lineTo(zb_x+5, zb_y-120+5);
_mc.moveTo(zb_x, zb_y);
_mc.lineStyle(1, 0x000000, 20);
_mc.beginFill(0x33ffcc, 40);
_mc.lineTo(zb_x+l*max_x+n, zb_y);
_mc.lineTo(zb_x+l*max_x+n, zb_y-100);
_mc.lineTo(zb_x, zb_y-100);
_mc.lineTo(zb_x, zb_y);
_mc.endFill();
_mc.moveTo(zb_x, zb_y-25);
_mc.lineTo(zb_x+l*max_x+n, zb_y-25);
_mc.moveTo(zb_x, zb_y-50);
_mc.lineTo(zb_x+l*max_x+n, zb_y-50);
_mc.moveTo(zb_x, zb_y-75);
_mc.lineTo(zb_x+l*max_x+n, zb_y-75);
_mc.createTextField("y_txt", 0, zb_x, zb_y-120, 0, 0);
_mc.y_txt.text = zb_array[0];
_mc.createTextField("x_txt", 1, zb_x+l*max_x, zb_y, 0, 0);
_mc.x_txt.text = zb_array[1];
_mc.y_txt.autoSize = true;
_mc.x_txt.autoSize = true;
}
//画条形图:
private function tx_fc():Void {
for (var i:Number = 0; i<max_x; i++) {
_mc.createEmptyMovieClip("mc"+i, 3+i);
_mc["mc"+i].lineStyle(1, 0x000000, 0);
_mc["mc"+i].beginFill(ys_array);
_mc["mc"+i].moveTo(zb_x+i*l+8, zb_y);
_mc["mc"+i].lineTo(zb_x+i*l+d+8, zb_y);
_mc["mc"+i].lineTo(zb_x+i*l+d+8, zb_y-h*sj_array);
_mc["mc"+i].lineTo(zb_x+i*l+8, zb_y-h*sj_array);
_mc["mc"+i].lineTo(zb_x+i*l+8, zb_y);
_mc["mc"+i].endFill();
_mc["mc"+i]._alpha = 50;
_mc["mc"+i].onRollOver = function() {
this._alpha = 100;
};
_mc["mc"+i].onRollOut = function() {
this._alpha = 50;
};
//
_mc.createTextField("txt"+i, 10+i, zb_x+i*l+23, zb_y-h*sj_array-15, 0, 0);
_mc["txt"+i].text = sj_array;
_mc["txt"+i].autoSize = true;
_mc["txt"+i].autoSize = "center";
_mc.createTextField("lx"+i, 20+i, zb_x+i*l+23, zb_y, 0, 0);
_mc["lx"+i].text = lx_array;
_mc["lx"+i].autoSize = true;
_mc["lx"+i].autoSize="center";
}
for (var i:Number = 0; i<5; i++) {
_mc.createTextField("rs"+i, 30+i, zb_x-3, zb_y-25*i-10, 0, 0);
_mc["rs"+i].text = Math.round(max_fc()*i/4);
_mc["rs"+i].autoSize = true;
_mc["rs"+i].autoSize = "right";
}
}
}
as:
_root.createEmptyMovieClip("_mc", 0);
var t = new txtjt(["新闻", "体育", "新闻", "美术", "历史"], ["人数", "节目类别"], _mc);
t.ht_fc([2, 5, 12, 24, 6]);
效果:
(2):
class:
class zxtjt extends txtjt {
public var b:Boolean = false;
public var sj_array:Array;
public var dot_mc:MovieClip;
public var dot_array:Array;
public function zxtjt(_array:Array, zb_array:Array, _mc:MovieClip, b:Boolean) {
this.lx_array = _array;
this.zb_array = zb_array;
this._mc = _mc;
this.max_x = _array.length;
//
this.b = b;
set_dl(30,40,false)
}
public function set_dl(d:Number,l:Number,zb_b:Boolean):Void {
this.d = d;
this.l = l;
this.zb_b=zb_b;
}
//定义画折线的方法:
public function zx_fc() {
_mc.createEmptyMovieClip("zx_mc", 50);
_mc.zx_mc.lineStyle(1, 0xff0000);
_mc.zx_mc.moveTo(zb_x+8+0.5*d, zb_y-sj_array[0]*100/max_fc());
for (var i:Number = 1; i<max_x; i++) {
_mc.zx_mc.lineTo(zb_x+i*l+0.5*d+8, zb_y-sj_array*100/max_fc());
}
}
//定义画小圆点的方法:
public function dot_fc(dot_mc:MovieClip):Void {
var x:Number = 0;
var y:Number = 0;
var r:Number = 2;
dot_mc.lineStyle(1, 0xff0000);
dot_mc.moveTo(x+r, y);
dot_mc.beginFill(0xff0000);
for (var i:Number = 0; i<2*Math.PI+0.1; i += 0.1) {
dot_mc.lineTo(x+r*Math.cos(i), y+r*Math.sin(i));
}
dot_mc.endFill();
}
//分布小圆点:
public function fb_fc() {
//var d:Number = 20;
//var l:Number = 40;
for (var i:Number = 0; i<sj_array.length; i++) {
_mc.createEmptyMovieClip("dot_mc"+i, 100+i);
dot_fc(_mc["dot_mc"+i]);
_mc["dot_mc"+i]._x = zb_x+8+0.5*d+i*l;
_mc["dot_mc"+i]._y = zb_y-sj_array*100/max_fc();
}
}
//画图:
public function hzxt_fc(_array:Array) {
sj_array = _array;
zx_fc();
if (b) {
ht_fc(_array);
} else {
fb_fc(20, 20);
ht_fc(_array);
for (var i in _mc) {
if (typeof (_mc) == "movieclip" && _mc._name.slice(0, 2) == "mc") {
_mc._visible = false;
}
}
}
}
}
as:
_root.createEmptyMovieClip("_mc", 0);
var t = new zxtjt(["新闻", "体育", "新闻", "美术", "历史"], ["人数", "节目类别"], _mc, true);
t.hzxt_fc([2, 5, 12, 24, 6]);
效果:
(3):
class:
class zftjt extends zxtjt {
public function zftjt(_array:Array, zb_array:Array, _mc:MovieClip, b:Boolean) {
this.lx_array = _array;
this.zb_array = zb_array;
this._mc = _mc;
this.max_x = _array.length;
//
this.b = b;
set_dl(40, 40, true);
}
public function hzft_fc(_array:Array) {
sj_array = _array;
if (b) {
ht_fc(_array);
zx_fc();
} else {
ht_fc(_array);
}
}
}
as:
_root.createEmptyMovieClip("_mc", 0);
var t = new zftjt(["新闻", "体育", "新闻", "美术", "历史"], ["人数", "节目类别"], _mc, true);
t.hzft_fc([2, 5, 12, 24, 6]);
效果:
[ 本帖最后由 200398sb40whb 于 2008-5-16 15:55 编辑 ]
|