发新话题
打印

[分享] 统计表的类

本帖已经被作者加入个人空间

统计表的类

今晚写好了一点,还有输入功能和方向健导航没些,先分享一下:
class:
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 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);
  }
}
}
as:
_root.createEmptyMovieClip("_mc", 0);
var tj = new statistic(["节目类型", "新闻", "体育", "动画", "娱乐", "戏曲", "合计"], ["节目类型", "人数", "百分比"], _mc);
tj.table_fc();
效果

TOP

完成了,用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();

TOP

发新话题