完成了,用tab健导航:
class statistic {
public var data_array:Array = [];
public var type_array:Array = [];
public var _mc:MovieClip;
public var list_n, row_n:Number;
public var txt_array:Array = [];
//构造函数:
public function statistic(type_array, data_array:Array, _mc:MovieClip) {
this.data_array = data_array;
this.type_array = type_array;
this._mc = _mc;
list_n = data_array.length;
row_n = type_array.length;
}
//显示的方法:
public function display() {
table_fc();
calculate_fc(row_n, list_n, txt_array);
}
//产生表格的方法:
public function table_fc() {
var my_format:TextFormat = new TextFormat();
my_format.align = "center";
my_format.size = 16;
for (var i:Number = 0; i<row_n; i++) {
txt_array
= new Array();
for (var j:Number = 0; j<list_n; j++) {
txt_array[j] = _mc.createTextField("_txt"+i+j, _mc.getNextHighestDepth(), 0, 0, 70, 25);
txt_array[j]._x = j*70;
txt_array[j]._y = i*25;
txt_array[j].border = true;
}
}
for (var i:Number = 0; i<row_n; i++) {
txt_array[0].background = true;
txt_array[0].backgroundColor = 0x66ff99;
txt_array[0].text = type_array;
txt_array[0].setTextFormat(my_format);
}
for (var j:Number = 0; j<list_n; j++) {
txt_array[0][j].background = true;
txt_array[0][j].backgroundColor = 0x66ff99;
txt_array[0][j].text = data_array[j];
txt_array[0][j].setTextFormat(my_format);
}
for (var i:Number = 1; i<row_n-1; i++) {
for (var j:Number = 1; j<list_n-1; j++) {
txt_array[list_n-2].type = "input";
txt_array[list_n-2].restrict = "0-9 .";
//txt_array[j].text = "";
txt_array[j].onChanged = function(obj) {
obj.setTextFormat(my_format);
};
}
}
}
//计算总数:
public function calculate_fc(row_n:Number, list_n:Number, txt_array:Array) {
var data_format:TextFormat = new TextFormat();
data_format.align = "center";
data_format.size = 16;
data_format.color = 0x0000ff;
_mc.onEnterFrame = function() {
for (var j:Number = 1; j<list_n-1; j++) {
var sum:Number = 0;
var num:Number;
for (var i:Number = 1; i<row_n-1; i++) {
num = txt_array[j].text == "" ? 0 : Number(txt_array[j].text);
sum = sum+num;
}
for (var i:Number = 1; i<row_n-1; i++) {
var percent:Number = 0;
percent = Number(txt_array[list_n-2].text)/sum;
txt_array[list_n-1].text = (Math.round(percent*1000)/10).toString()+"%";
txt_array[row_n-1][list_n-1].text = 1;
txt_array[list_n-1].setTextFormat(data_format);
txt_array[row_n-1][list_n-1].setTextFormat(data_format);
}
txt_array[row_n-1][j].text = sum;
txt_array[row_n-1][j].setTextFormat(data_format);
}
};
}
}
as:
_root.createEmptyMovieClip("_mc", 0);
var tj = new statistic(["节目类型", "新闻", "体育", "动画", "娱乐", "戏曲", "合计"], ["节目类型", "划记", "人数", "百分比"], _mc);
tj.display();