文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院媒体动画Flash用Flash AS3制作统计饼图动画效果
精品推荐
特别推荐
·FLASH基础的一些心得体会
·推荐:不间断滚动显示图片的代码
·全面升级您的Flash播放器
·由浅入深学习Flash制作高射炮游戏
·由浅入深学习Flash制作高射炮游戏(续)
·遮照及文字遮照的几个概念和事例
·创建一个实用Flash站点的十大技巧
·Flash动画制作实例:小野人玩摇滚
·Flash技术在电子杂志设计制作应用
·用js+flash实现网页中复制数据功能
·教你如何去掉网页上的Flash动画虚线框
·让Flash动画适应任何分辨率的网页
·基础:flash9.ocx 加载错误解决方法
·Flash AS基础精典教程
·Flash AS教程之四 动态文本的编写以及外部文本的载入
·flash载入外部文本设置颜色的问题
·Flash制作漂亮的三重卷动相册特效动画
·关于网页中Flash弹出网页窗口的详细讲解
·用FLASH遮罩效果做图片切换效果
·实例技巧:Flash与HTML实现交互的实例
热点TOP10
·Flash 图片轮换效果
·Flash如何制作灯光效果
·Flash AS3:动态文本滚动条
·Flash制作漂亮的三重卷动相册特效动画
·书本翻页效果
·Flash AS基础精典教程
·用FLASH遮罩效果做图片切换效果
·flash声音特效实例--架子鼓(图)
·Flash精彩背景特效源文件下载(2)
·Flash用鼠标控制图片移动效果动画教程
·用 FLASH 8 制作瀑布动画
·将数码照片做成自动放映的Flash
·Flash电子书鼠标拖拽翻页效果原理
·两只蝴蝶飞舞动画,Flash制作方法
·Flash动画制作实例:小野人玩摇滚
·把好看的flash动画设为桌面
·Macromedia Flex 教程: Flex入门教程
·Flash AS制作的仿苹果机的导航菜单
·Flash制作一款漂亮的韩国式下拉菜单
·实例讲解flashMTV制作全过程(目录)

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

日期:2007年8月21日 作者: 查看:[大字体 中字体 小字体]


说明:点击的蓝色按钮可以画出各种饼图,点击饼图中不同色块可以观看效果。

代码如下: /**
* @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<len; j++) {
    setChildIndex(__contain["shape"+_depthList[j]],j);
   }
  }
  private function drawPie():void {
   __contain={};
   var len:uint=_angleList.length;
   var step:uint=1;
   for (var j:uint=0; j < len; j++) {
    __contain["shape"+j]=new MovieClip;
    //设置中心角,方便以下进行点中移动
    __contain["shape"+j].r=(_angleList[j][0]+_angleList[j][1])/2;
    __contain["shape" + j].addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownX);
    addChild(__contain["shape"+j]);
    var drakColor:uint=getDarkColor(_colorList[j]);//深色
    var g:Graphics=__contain["shape"+j].graphics;
    //g.lineStyle(1);
    //先画底
    //内弧
    g.beginFill(_colorList[j],_alpha);
    g.moveTo(_x0,_y0+_h);
    var r:Number=_angleList[j][0];
    var minR:Number=r;
    var maxR:int=_angleList[j][1];
    while (r + step < maxR) {      g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,r).x,getRPoint(_x0,_y0 + _h,_a,_b,r).y);
     r+= step;
    }
    g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,maxR).x,getRPoint(_x0,_y0 + _h,_a,_b,maxR).y);
    //
    g.endFill();
    //画内侧面
    g.beginFill(drakColor,_alpha);
    g.moveTo(_x0,_y0+_h);
    g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,minR).x,getRPoint(_x0,_y0 + _h,_a,_b,minR).y);
    g.lineTo(getRPoint(_x0,_y0,_a,_b,minR).x,getRPoint(_x0,_y0,_a,_b,minR).y);
    g.lineTo(_x0,_y0);
    g.endFill();
    //画外侧面
    g.beginFill(drakColor,_alpha);
    g.moveTo(_x0,_y0+_h);
    g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,maxR).x,getRPoint(_x0,_y0 + _h,_a,_b,maxR).y);
    g.lineTo(getRPoint(_x0,_y0,_a,_b,maxR).x,getRPoint(_x0,_y0,_a,_b,maxR).y);
    g.lineTo(_x0,_y0);
    g.endFill(); 
    //画外弧侧面
    g.beginFill(drakColor,_alpha);
    //g.lineStyle(1);
    g.moveTo(getRPoint(_x0,_y0 + _h,_a,_b,minR).x,getRPoint(_x0,_y0 + _h,_a,_b,minR).y);
    g.lineTo(getRPoint(_x0,_y0,_a,_b,minR).x,getRPoint(_x0,_y0,_a,_b,minR).y);
    r=minR;
    while (r + step < maxR) {
     r+= step;
     g.lineTo(getRPoint(_x0,_y0,_a,_b,r).x,getRPoint(_x0,_y0,_a,_b,r).y);
    }
    g.lineTo(getRPoint(_x0,_y0,_a,_b,maxR).x,getRPoint(_x0,_y0,_a,_b,maxR).y);
    g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,maxR).x,getRPoint(_x0,_y0 + _h,_a,_b,maxR).y);
    while (r - step > minR) {
     g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,r).x,getRPoint(_x0,_y0 + _h,_a,_b,r).y);
     r-= step;
    }
    g.lineTo(getRPoint(_x0,_y0 + _h,_a,_b,minR).x,getRPoint(_x0,_y0 + _h,_a,_b,minR).y);
    g.endFill();
    //画上表面
    g.beginFill(_colorList[j],_alpha);
    g.moveTo(_x0,_y0);
    r=minR;
    while (r + step < maxR) {

     g.lineTo(getRPoint(_x0,_y0,_a,_b,r).x,getRPoint(_x0,_y0,_a,_b,r).y);
     r+= step;
    }
    g.lineTo(getRPoint(_x0,_y0,_a,_b,maxR).x,getRPoint(_x0,_y0,_a,_b,maxR).y);
    g.endFill();
   }
  }
  private function onMouseDownX(e:MouseEvent):void {
   var TG:MovieClip=e.target as MovieClip;
   var posX:int=getRPoint(0,0,D,D,TG.r).x;
   var posY:int=getRPoint(0,0,D,D,TG.r).y;
   if (TG.x==0 TG.y==0) {
    TG.removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownX);
    var tween1=new Tween(TG,"x",Bounce.easeOut,0,posX,1,true);
    var tween2=new Tween(TG,"y",Bounce.easeOut,0,posY,1,true);
    tween1.addEventListener(TweenEvent.MOTION_FINISH,onMotionFinish);
   } else {
    TG.removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownX);
    var tween3=new Tween(TG,"x",Bounce.easeOut,TG.x,0,1,true);
    var tween4=new Tween(TG,"y",Bounce.easeOut,TG.y,0,1,true);
    tween3.addEventListener(TweenEvent.MOTION_FINISH,onMotionFinish);
   }
  }
  private function onMotionFinish(e:TweenEvent):void {
   var TG:MovieClip=e.currentTarget.obj as MovieClip;
   TG.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownX);
  }
  private function getDarkColor(color:uint):uint {
   var r:uint=color >> 16 & 0xFF / 1.3;
   var g:uint=color >> 8 & 0xFF / 1.3;
   var b:uint=color & 0xFF /1.1;
   return r << 16 g << 8 b;
  }
  private function getRPoint(x0:Number,y0:Number,a:Number,b:Number,r:Number):Object {
   r=r * Math.PI / 180;
   return {x:Math.cos(r) * a + x0,y:Math.sin(r) * b + y0};
  }
  public function get contain():Object {
   return __contain;
  }
}
}

(出处:清风网络学院






上一篇:关于奇虎360误杀金山毒霸升级程序的声明

下一篇:三维景观软件Vue 5 Esprit滤镜编辑器详解

用Flash AS3制作统计饼图动画效果 相关文章:
·QQ空间4.0 透明Flash_500个
·QQ空间透明flash代码
·3DS Max 7卧室效果图设计:建模篇
·新收集200多种美化QQ空间的透明Flash
·Photoshop十余种漂亮照片边框简单制作技巧
·[最新QQ空间代码]QQ空间花,漂浮物、开场动画代码
·3DMax:跟我学做房间效果图
·QQ空间流星雨效果代码
·教你如何制作QQ空间FLASH导航条
·Photoshop实例:制作超酷影片画面场景
用Flash AS3制作统计饼图动画效果 相关软件:
·暗黑破坏神 2:毁灭之王 1.10S极品属性装备制作器
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·家常菜制作集锦(1)
·《最终幻想12》超清晰CG动画
·家常菜制作集锦(2)
·启动光盘制作完全手册(菜鸟先飞 图文教材系列)
·多种dos启动盘制作全攻略
·Flash MX 动画制作实例教程
·FLASH 8中文使用手册
·灵豚课件制作工具——课件精灵v1.0 beta

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot