`
wangangie21
  • 浏览: 61599 次
  • 性别: Icon_minigender_2
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

柱状图

 
阅读更多

  Main application file: 
  flex/spark"
  xmlns:mx="library://ns.adobe.com/flex/mx"
  minWidth="955"
  minHeight="600"
  xmlns:component="com.component.*"
  pageTitle="2008北京奥运会奖牌" viewSourceURL="srcview/index.html">
  
  
  
  
  
  
  width="600"
  height="300"
  verticalTotalValue="60">
  
  width="127" height="267">
  -->
  
  chart:
  /*************************************************
  ****  
  **** 黄记新,2010-10-14,下午04:58:40
  ****
  ************************************************/
  //    .==. .==.
  //        //`^\\ //^`\\
  //       // ^ ^\\ //^ ^^\\
  //      //^ ^^ ^\(\__/)/^ ^^ \\
  //     //^ ^^ ^^ /6 6\ ^ ^^ ^\\
  //    //^ ^^ ^^ /( .. )\^ ^ ^ ^\\
  //   // ^^ ^^ /\| V""V |/\^ ^ ^ \\
  //   // ^^ ^/\/ / `~~` \ \/\^ ^ \\
  package com.component
  {
  import flash.display.Graphics;
  import flash.events.Event;
  import flash.events.MouseEvent;
  import flash.filters.BevelFilter;
  import flash.filters.DropShadowFilter;
  import flash.utils.Dictionary;
  import mx.core.IFactory;
  import mx.core.UIComponent;
  import spark.components.Group;
  import spark.components.Label;
  public class ColumnChart extends Group
  {
  //数据源
  [Bindable]
  private var _dataProvider:Object;
  protected var dataProviderChanged:Boolean;
  //渲染器
  private var _itemRenderer:IFactory;
  //滤镜
  private var dropShadowFilter:DropShadowFilter=new DropShadowFilter();
  private var bevelFilter:BevelFilter=new BevelFilter();
  private var itemToRender:Dictionary;
  private var renderToItem:Dictionary;
  private var objectsArray:Array=[];
  private var colorArray:Array=[];
  private var labelArray:Array=[];
  private var _verticalTotalValue:Number;
  //滤镜
  private var dropShadowFil:DropShadowFilter=new DropShadowFilter();
  private var lineContainer:Group;
  private var lineColor:uint=Math.random()*0xffffff;
  public function ColumnChart()
  {
  //TODO: implement function
  super();
  itemToRender=new Dictionary(true);
  renderToItem=new Dictionary(true);
  this.filters=[dropShadowFil];
  addEventListener(MouseEvent.ROLL_OVER, onRollOver);
  addEventListener(MouseEvent.ROLL_OUT, onRollOut);
  }
  public function get verticalTotalValue():Number
  {
  return _verticalTotalValue;
  }
  public function set verticalTotalValue(value:Number):void
  {
  _verticalTotalValue=value;
  }
  /*************************************************
  ****
  **** setter和 getter函数
  ****
  ************************************************/
  public function get itemRenderer():IFactory
  {
  return _itemRenderer;
  }
  public function set itemRenderer(value:IFactory):void
  {
  _itemRenderer=value;
  }
  public function get dataProvider():Object
  {
  return _dataProvider;
  }
  public function set dataProvider(value:Object):void
  {
  /*if (_dataProvider == value)
  {
  return;
  }*/
  _dataProvider=value;
  dataProviderChanged=true;
  invalidateProperties();
  }
  /**
  * 创建实例
  * @param object
  * @return
  */
  protected function createItemInstance(object:Object):UIComponent
  {
  var render:UIComponent=itemRenderer.newInstance() as UIComponent;
  if (render is IColumnItemRender)
  {
  IColumnItemRender(render).data=object;
  }
  return render;
  }
  /**
  * 移除实例;
  * @param object
  */
  protected function removeItemInstance(object:Object):void
  {
  var render:UIComponent=itemToRender[object] as UIComponent;
  if (render && this.contains(render))
  {
  this.removeElement(render);
  itemToRender[object]=null;
  renderToItem[render]=null;
  }
  }
  /**
  * 移除所有实例;
  * @param array
  */
  protected function removeAllItem(array:Array):void
  {
  if (array.length == 0)
  return;
  for (var i:int=0; i width, Group(event.currentTarget).mouseY);
  /*g.moveTo(Group(event.currentTarget).mouseX, height);
  g.lineTo(Group(event.currentTarget).mouseX, 0);*/
  }
  /**
  * 响应条目项点击
  * @param event
  */
  private function onClick(event:MouseEvent):void
  {
  var render:UIComponent=event.currentTarget as UIComponent;
  var object:Object=getItem(event.currentTarget as UIComponent);
  if (!object)
  {
  return;
  }
  //派发条目点击事件
  object.render=event.currentTarget as UIComponent;
  dispatchEvent(new ColumnChartEvent(ColumnChartEvent.ITEM_CLICK, object));
  }
  private function getItem(render:UIComponent):Object
  {
  return renderToItem[render] as Object;
  }
  private function getRender(object:Object):UIComponent
  {
  return itemToRender[object] as UIComponent;
  }
  override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
  {
  super.updateDisplayList(unscaledWidth, unscaledHeight);
  var totalValueHeight:Number=height / verticalTotalValue;
  var averageHeigh:Number=verticalTotalValue / 10;
  this.graphics.lineStyle(1, 0x123456);
  this.graphics.moveTo(-5, height);
  this.graphics.lineTo(-5, height - verticalTotalValue * totalValueHeight);
  /*this.graphics.moveTo(-5, height+1);
  this.graphics.lineTo(width, height+1);*/
  for (var i:int=0; i 
  
  flex/spark"
  xmlns:mx="library://ns.adobe.com/flex/mx"
  autoDrawBackground="false"
  implements="com.component.IColumnItemRender">
  
  width:Number, height:Number, color:uint=0x000000, drawLine:Boolean=false, lineColor:uint=0x000000, alpha:Number=1, lineAlpha:Number=0.7):void
  {
  var xw:Number=x + width;
  var yh:Number=y + height;
  if (drawLine)
  {
  graphics.lineStyle(1, lineColor, lineAlpha, true);
  }
  else
  {
  graphics.lineStyle(1, color, lineAlpha, true);
  }
  graphics.beginFill(color, alpha);
  graphics.moveTo(x, y);
  graphics.lineTo(xw, y);
  graphics.lineTo(xw, yh);
  graphics.lineTo(x, yh);
  graphics.endFill();
  }
  ]]>
  
  
  
  /*************************************************
  ****   
  **** 黄记新,2010-10-12,下午04:33:13
  ****
  ************************************************/
  package com.component
  {
  public interface IColumnItemRender
  {
  function get data():Object;
  function set data(object:Object):void;
  }
  }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics