灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3571回复:0

用Flash AS3制作统计饼图动画效果

楼主#
更多 发布于:2011-08-16 03:11

用Flash AS3制作统计饼图动画效果

 

说明:点击的蓝色按钮可以画出各种饼图,点击饼图中不同色块可以观看效果。
代码如下:
/** 
* @class:DrawPieGraph(画饼状图) 
* @author:ycccc8202 
* @date:2007.8.16 
* @example: 
* import com.ycccc.Graphics.*; 
* var dataList:Array=[10,10,10,100,10,10,10,100]; 
* var pie:DrawPieGraph=new DrawPieGraph(200,200,150,90,15,dataList,[0xFF0F00,0xFF6600,0xFF9E01,0xFCD202,0xF8FF01,0xB0DE09,0x04D215,0x0D8ECF],.7); 
* addChild(sprite); 
*/ 
package com.ycccc.Graphics{ 
import fl.transitions.Tween; 
import fl.transitions.easing.*; 
import fl.transitions.TweenEvent; 
import flash.display.MovieClip; 
import flash.display.Sprite; 
import flash.display.Shape; 
import flash.display.Graphics; 
import flash.events.MouseEvent; 
public class DrawPieGraph extends MovieClip { 
   
  //存放shape对象 
  private var __contain:Object; 
  //设置角度从-90开始 
  private var R:int=-90; 
  private var D:uint=20; 
  private var _shape:Shape; 
  //初始饼图的圆心位置 
  private var _x0:Number; 
  private var _y0:Number; 
  //椭圆饼图的长轴与短轴长度 
  private var _a:Number; 
  private var _b:Number; 
  //饼图的厚度 
  private var _h:Number; 
  //透明度 
  private var _alpha:Number 
  //数据列表 
  private var _dataList:Array; 
  private var _colorList:Array; 
  private var _angleList:Array; 
  private var _depthList:Array; 
  // 
  /** 
  *@param:x0......>圆心x坐标 
  *@param:y0......>圆心y坐标 
  *@param:a......>长轴 
  *@param:b......>短轴 
  *@param:h......>厚度 
  *@param:dataList......>数据列表 
  *@param:dataList......>颜色列表 
  *@alpha:Number......>透明度,默认为1.0 
  */ 
  public function DrawPieGraph(x0:Number,y0:Number,a:Number,b:Number,h:Number,
dataList:Array,colorList:Array,alpha:Number=1.0) { 
   _x0=x0; 
   _y0=y0; 
   _a=a; 
   _b=b; 
   _h=h; 
   _alpha=alpha 
    
   _dataList=dataList; 
   _colorList=colorList; 
   setAngleList(); 
   drawPie(); 
   setDepths(); 
  } 
  private function setAngleList():void { 
   _angleList=[]; 
   var totalData:int; 
   var len:uint=_dataList.length; 
   for (var j:uint=0; j < len; j++) { 
    totalData+= _dataList[j]; 
   } 
   for (j=0; j < len; j++) { 
    if (j == len - 1) { 
     _angleList.push([R,270]); 
    } else { 
     var r:uint=Math.floor(_dataList[j] / totalData * 360); 
     var posR:int=R + r; 
     _angleList.push([R,posR]); 
     R=posR; 
     trace(r+"___r"); 
     trace(R); 
    } 
   } 
   trace(_angleList + ":::"); 
  } 
  private function setDepths():void { 
   _depthList=[]; 
   var len:uint=_angleList.length; 
   for (var j:uint=0; j < len; j++) { 
    var minJ:Number=_angleList[j][0]; 
    var maxJ:Number=_angleList[j][1]; 
    switch (true) { 
     case minJ >= -90 ;; minJ <= 90 ;; maxJ<=90 : 
      _depthList[j]=minJ; 
      break; 
     default : 
      _depthList[j]=1000-minJ; 
    } 
   }//end for 
   trace(_depthList + "::::_depthList"); 
   _depthList=_depthList.sort(Array.NUMERIC | Array.RETURNINDEXEDARRAY); 
   trace(_depthList); 
   for (j=0; j



喜欢0 评分0
游客

返回顶部