| 网站首页 | 免费课件 | 课件源码 | 课件制作 | 课件购买 | 课件教程 | 课堂内外 | 教案 | 试卷 | 论文 | 电脑 | 教案下载 | 
 | 试卷下载 | 论文下载 | 计划总结 | 新闻资讯 | 行业范文 | 图片 | 留言 | 术语大全 | 搞笑 | 字体 | 短信 | Flash视频教程 | 
 | 办公软件视频 | 编程设计视频 | 热门视频 | 课件论坛 | 作文写作 | 
您现在的位置: 教育资源网 >> 课件教程 >> Flash教程 >> Flash组件教程 >> 正文 用户登录 新用户注册
免费精品 课件源程序下载 课件点播 课件定做 课件复原 课件制作指导 毕业设计 更多服务
Google




Flash组件教程——圆形分格统计图表之组件版
作者:佚名    教程来源:佚名    点击数:    更新时间:2006-9-3         ★★★ 【字体:
这是例子




点击浏览该文件

这是原文件

点击浏览该文件

强烈要求版主把".AS"文件格式添加为可上传的文件类型

这是组件的代码大家把他考贝到Flash2004保存为pie.as并把他放到和那个原文件同一目录下就可以了

class pie extends MovieClip {
   /*********************************************************
   圆形分格统计图表 组件
   版本:1.0
   核芯代码来自Super-Tomato
   我将它改写成AS2.0的组件 并添加了功能 这样方便大家使用
   1.只要在组件属性面板中填写数据就可以自动生成圆饼图
   2.可以动态的修改组件的m_data属性并调用DrawPIE();来动态更新圆饼图
   3.修正了原代码的设置半径的BUG(至少在我这发现直接修改radius的值没有效果)
   4.可以指定颜色,如果没有颜色值则随机生成
   
   计划在下个版本中加入以下功能
   1.相应事件
   2.添加标签
   3.可直接支持XML
   4.其他想到在说阿 各位也可以 提点意见
   
   koaqiu 2004-5-24于 E++工作室
   **********************************************************/


   private var angleA:Array = new Array();
   private var angleB:Array = new Array();
   private var radius:Number =100;
   private var MC:MovieClip;
   var m_data:Array;
   var m_color:Array;
   var m_radius:Number;
   private function MakeAngle(md:Array) {
      var l:Number;
      var i:Number;
      var 和:Number = 0;
      var md_agn:Array = new Array();
      angleA=new Array();
      angleB=new Array();
      for (i=0; i<md.length; i++) {
         和 += md[i];
      }
      for (i=0; i<md.length; i++) {
         md_agn.push(360*md[i]/和);
      }
      for (i=1; i<md_agn.length; i++) {
         md_agn[i] = md_agn[i]+md_agn[i-1];
      }
      angleA[0] = 0;
      for (i=1; i<md_agn.length; i++) {
         angleA[i] = md_agn[i-1];
      }
      for (i=0; i<md_agn.length; i++) {
         angleB[i] = md_agn[i];
      }
   }
   function pie() {
      MC=this;
      DrawPIE();
   }
   function DrawPIE() {
      radius=this.m_radius;
      MakeAngle(this.m_data);
      for (var i = 0; i<angleA.length; i++) {
         MC.attachMovie("pie_mc", "pie"+i, i);
         MC["pie"+i]._width =radius*200/100 ;
         MC["pie"+i]._height = radius*126.6/100;
         MC["pie"+i]._x = MC["pie"+i]._width/2;
         MC["pie"+i]._y = MC["pie"+i]._height/2;

         MC.createEmptyMovieClip("mask"+i, i+angleA.length);
         MC["mask"+i]._x = MC["pie"+i]._x;
         MC["mask"+i]._y = MC["pie"+i]._y-15;
         Draw(angleA[i], angleB[i], i);
         MC["pie"+i].setMask(MC["mask"+i]);
         if(isNaN(this.m_color[i])){
            setHue(Math.floor(Math.random()*0xFFFFFF), i);
         }else{
            setHue(this.m_color[i], i);
         }
      }
   }
   private function Point(Angle:Number) {
      var pt:Object = new Object();
      pt.x = radius*Math.cos((Math.PI/180)*Angle);
      pt.y = (0.5)*radius*Math.sin((Math.PI/180)*Angle);
      return pt;
   }

   private function Draw(angleA:Number, angleB:Number, depth:Number) {
      var drawer:MovieClip = MC["mask"+depth].createEmptyMovieClip("drawer", 0);
         drawer.beginFill(0xFFFFFF, 30);
         var pt1:Object = Point(angleA);
         drawer.lineTo(pt1.x, pt1.y);
         if (pt1.y<=0) {
            drawer.lineTo(2*pt1.x, 2*pt1.y);
         } else {
            drawer.lineTo(pt1.x, pt1.y+50);
         }
         var tempAngle:Number = angleA+10;
         while (tempAngle<angleB) {
            var tempPt:Object = Point(tempAngle);
            drawer.lineTo(2*tempPt.x, 2*tempPt.y);
            tempAngle += 10;
         }
         var pt2:Object = Point(angleB);
         
         if (pt2.y<=0) {
            drawer.lineTo(2*pt2.x, 2*pt2.y);
         } else {
            drawer.lineTo(pt2.x, pt2.y+50);
         }
         drawer.lineTo(pt2.x, pt2.y);
         drawer.endFill();

   }
   private function setHue(rgb:Number, depth:Number) {
      var c:Color = new Color(MC["pie"+depth]);
      var cv:Number = rgb;
      var r:Number = (cv >> 16)/2;
      var g:Number = ((cv >> 8) & (0xFF))/2;
      var b:Number = (cv & 0xFF)/2;
      c.setTransform({ra:r, ga:g, ba:b, rb:0, gb:0, bb:0, aa:100, ab:0});
   }
}
  .
 
 
Google
我们的服务免费课件 课件定做 毕业课件设计 免费课件(QQ:375824467/电话:13996037041)  教程录入:admin    责任编辑:admin 
------------

发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

  • 上一篇教程:
  • 下一篇教程:
  •    最新热点    最新推荐    相关教程
    Flash MX组件扩展组件…
    多功能PageRank显示插件
    DataGrid常用的使用技巧
    list组件项目的多选
    全力打造超级可扩展Menubar
    笨方法做CheckBox的全选功能
    KoaQiu组件教程之Tree
    Flash V2组件开发…
    V2组件事件模型part1-事件分…
    FCL组件库
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)