Chart: 备份
来源:互联网 发布:淘宝店铺怎么注册 编辑:程序博客网 时间:2024/06/18 12:48
package base
{
import iAS.myNamespace.myInternal;
use namespace myInternal;
public class Chart_Base1 extends Container_Base
{
//***************************************************************************************
// 属性
//***************************************************************************************
protected var _dataProvider:XML = null;
protected var _fieldName:String ;
myInternal var _serieFieldNames:Array ;
protected var _minReal:Number = 0;
protected var _maxReal:Number = 0;
protected var _minTick:Number = 0;
protected var _maxTick:Number = 0;
myInternal var intervalValueY:Number = 0;
myInternal var intervalCountY:Number = 0;
myInternal var intervalValueX:Number = 0;
myInternal var intervalCountX:Number = 0;
//***************************************************************************************
// 子组件
//***************************************************************************************
protected var _titlesX:Vector.<Label_H> = new Vector.<Label_H>();
protected var _titlesY:Vector.<Label_H> = new Vector.<Label_H>();
//***************************************************************************************
// 构造函数
//***************************************************************************************
public function Chart_Base1( fieldName:String , serieFieldNames:Array )
{
super( );
_fieldName = fieldName;
_serieFieldNames = serieFieldNames;
}
//***************************************************************************************
// 流程函数
//***************************************************************************************
override protected function s2_setDefualt():void
{
super.s2_setDefualt();
_rendererClassName = "Chart_Base_R" ;
}
override protected function s61_resetPartsToRenderer():void
{
this._renderer.s1_setPartsReference(this , _contentObj , _titlesX , _titlesY);
}
//***************************************************************************************
// 功能函数
//***************************************************************************************
protected function calculateMinMaxReal():void
{
if(_dataProvider==null) return ;
var data:XMLList = _dataProvider.child(_fieldName);
var len:int = data.length() ;
if(len==0) return ;
var flg:Boolean = true ;
var temp:XML ;
var num:Number ;
//获取minReal/maxReal的初值
temp = data[0];
for each( name in _serieFieldNames)
{
num = temp.child(name) ;
if(flg)
{
_minReal = _maxReal = num ;
flg = false ;
continue ;
}
if(num > _maxReal)
{
_maxReal = num ;
continue ;
}
if(num <_minReal)
{
_minReal = num ;
}
}
//获取minReal/maxReal的值
for(var i:int=1 ; i<len ; i++)
{
temp = data[i];
for each( name in _serieFieldNames)
{
num = temp.child(name) ;
if(num > _maxReal)
{
_maxReal = num ;
continue ;
}
if(num <_minReal)
{
_minReal = num ;
}
}
}
}
protected function calculateTick( malIntervalCount:int):void
{
//【1】计算Y轴
//计算增量
var delta:Number = _maxReal - _minReal;
//计算数量级,并降低2个数量级
var exp:int = (int)(Math.log(delta)/Math.log(10.0))-2;
//计算乘法因子
var multiplier:Number = Math.pow(10, exp);
//定义枚举
var solutions:Array = [1, 2, 2.5, 5, 10, 20, 25, 50, 100, 200, 250, 500] ;
var len:int = solutions.length ;
var multiCal:Number
var i:int;
//试算,获得需要的枚举
for(i=0; i<len; i++)
{
multiCal = multiplier * solutions[i];
if(((int)(delta/multiCal) + 1)<=malIntervalCount)
{
break;
}
}
//计算数字间隔
intervalValueY = multiplier * solutions[i];
//计算坐标轴最小刻度值
_minTick = (int)(Math.ceil(_minReal/intervalValueY) - 1) * intervalValueY;
//计算坐标轴最大刻度值
for(i=0; 1; i++)
{
if(_minTick+intervalValueY*i>_maxReal)
{
_maxTick = _minTick+intervalValueY*i;
//保存间隔数
intervalCountY = i ;
break;
}
}
}
protected function createTickObj():void
{
var i:int ;
var label:Label_H ;
//【1】生成Y轴刻度对象
for (i=0; i<=intervalCountY; i++)
{
label = new Label_H();
label.text = (_minTick+intervalValueY*i).toString();
_titlesY.push(label) ;
}
//【2】生成X轴刻度对象
// var data:XMLList = _dataProvider.child(_fieldName);
// var len:int = data.length() ;
//
// for (i=0; i<len; i++)
// {
// label = new Label_H();
// label.text = data[i].@title;
// _titlesX.push(label) ;
// }
//
// intervalCountX = i + 1 ;
}
//***************************************************************************************
// 发送事件函数
//***************************************************************************************
//***************************************************************************************
// 渲染器对象调用的函数(本类内部也可以调用)
//***************************************************************************************
myInternal function calculateIntervalAndCreateTicks( malIntervalCount:int):void
{
if( malIntervalCount<1 ) return;
//计算最大最小数值
calculateMinMaxReal();
//计算刻度
calculateTick(malIntervalCount);
//生成刻度
createTickObj();
}
//***************************************************************************************
// 属性函数
//***************************************************************************************
public function get dataProvider():XML
{
return _dataProvider;
}
public function set dataProvider(value:XML):void
{
_dataProvider = value;
layoutChanged = true;
}
}
}
{
import iAS.myNamespace.myInternal;
use namespace myInternal;
public class Chart_Base1 extends Container_Base
{
//***************************************************************************************
// 属性
//***************************************************************************************
protected var _dataProvider:XML = null;
protected var _fieldName:String ;
myInternal var _serieFieldNames:Array ;
protected var _minReal:Number = 0;
protected var _maxReal:Number = 0;
protected var _minTick:Number = 0;
protected var _maxTick:Number = 0;
myInternal var intervalValueY:Number = 0;
myInternal var intervalCountY:Number = 0;
myInternal var intervalValueX:Number = 0;
myInternal var intervalCountX:Number = 0;
//***************************************************************************************
// 子组件
//***************************************************************************************
protected var _titlesX:Vector.<Label_H> = new Vector.<Label_H>();
protected var _titlesY:Vector.<Label_H> = new Vector.<Label_H>();
//***************************************************************************************
// 构造函数
//***************************************************************************************
public function Chart_Base1( fieldName:String , serieFieldNames:Array )
{
super( );
_fieldName = fieldName;
_serieFieldNames = serieFieldNames;
}
//***************************************************************************************
// 流程函数
//***************************************************************************************
override protected function s2_setDefualt():void
{
super.s2_setDefualt();
_rendererClassName = "Chart_Base_R" ;
}
override protected function s61_resetPartsToRenderer():void
{
this._renderer.s1_setPartsReference(this , _contentObj , _titlesX , _titlesY);
}
//***************************************************************************************
// 功能函数
//***************************************************************************************
protected function calculateMinMaxReal():void
{
if(_dataProvider==null) return ;
var data:XMLList = _dataProvider.child(_fieldName);
var len:int = data.length() ;
if(len==0) return ;
var flg:Boolean = true ;
var temp:XML ;
var num:Number ;
//获取minReal/maxReal的初值
temp = data[0];
for each( name in _serieFieldNames)
{
num = temp.child(name) ;
if(flg)
{
_minReal = _maxReal = num ;
flg = false ;
continue ;
}
if(num > _maxReal)
{
_maxReal = num ;
continue ;
}
if(num <_minReal)
{
_minReal = num ;
}
}
//获取minReal/maxReal的值
for(var i:int=1 ; i<len ; i++)
{
temp = data[i];
for each( name in _serieFieldNames)
{
num = temp.child(name) ;
if(num > _maxReal)
{
_maxReal = num ;
continue ;
}
if(num <_minReal)
{
_minReal = num ;
}
}
}
}
protected function calculateTick( malIntervalCount:int):void
{
//【1】计算Y轴
//计算增量
var delta:Number = _maxReal - _minReal;
//计算数量级,并降低2个数量级
var exp:int = (int)(Math.log(delta)/Math.log(10.0))-2;
//计算乘法因子
var multiplier:Number = Math.pow(10, exp);
//定义枚举
var solutions:Array = [1, 2, 2.5, 5, 10, 20, 25, 50, 100, 200, 250, 500] ;
var len:int = solutions.length ;
var multiCal:Number
var i:int;
//试算,获得需要的枚举
for(i=0; i<len; i++)
{
multiCal = multiplier * solutions[i];
if(((int)(delta/multiCal) + 1)<=malIntervalCount)
{
break;
}
}
//计算数字间隔
intervalValueY = multiplier * solutions[i];
//计算坐标轴最小刻度值
_minTick = (int)(Math.ceil(_minReal/intervalValueY) - 1) * intervalValueY;
//计算坐标轴最大刻度值
for(i=0; 1; i++)
{
if(_minTick+intervalValueY*i>_maxReal)
{
_maxTick = _minTick+intervalValueY*i;
//保存间隔数
intervalCountY = i ;
break;
}
}
}
protected function createTickObj():void
{
var i:int ;
var label:Label_H ;
//【1】生成Y轴刻度对象
for (i=0; i<=intervalCountY; i++)
{
label = new Label_H();
label.text = (_minTick+intervalValueY*i).toString();
_titlesY.push(label) ;
}
//【2】生成X轴刻度对象
// var data:XMLList = _dataProvider.child(_fieldName);
// var len:int = data.length() ;
//
// for (i=0; i<len; i++)
// {
// label = new Label_H();
// label.text = data[i].@title;
// _titlesX.push(label) ;
// }
//
// intervalCountX = i + 1 ;
}
//***************************************************************************************
// 发送事件函数
//***************************************************************************************
//***************************************************************************************
// 渲染器对象调用的函数(本类内部也可以调用)
//***************************************************************************************
myInternal function calculateIntervalAndCreateTicks( malIntervalCount:int):void
{
if( malIntervalCount<1 ) return;
//计算最大最小数值
calculateMinMaxReal();
//计算刻度
calculateTick(malIntervalCount);
//生成刻度
createTickObj();
}
//***************************************************************************************
// 属性函数
//***************************************************************************************
public function get dataProvider():XML
{
return _dataProvider;
}
public function set dataProvider(value:XML):void
{
_dataProvider = value;
layoutChanged = true;
}
}
}
0 0
- Chart: 备份
- chart
- Chart
- chart
- chart
- Chart
- chart初始
- DHTML Chart
- ASCII Chart
- flex chart
- 转 Chart
- flash chart
- Jfree Chart
- MS Chart
- silverlight chart
- Chart 报表
- chart控件
- Extjs Chart
- Mybatis调用PostgreSQL存储过程实现数组入参传递
- Openlayer总结
- vsftpd相关
- iOS控件详解之UIScrollView
- 网站页面静态化方案
- Chart: 备份
- ReactNative学习路线图
- springmvc 拦截器拦截静态资源
- sublime运行python文件简单配置与安装
- 深入理解React中的上下文this
- SessionID的本质
- ORA-01789: 查询块具有不正确的结果列数
- Single Numbe
- Java IO实现文件的复制