自作ラインチャートw

by YAZUMA forked from textPad (diff: 191)
♥0 | Line 83 | Modified 2010-07-09 14:09:08 | MIT License
play

ActionScript3 source code

/**
 * Copyright YAZUMA ( http://wonderfl.net/user/YAZUMA )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/sSJM
 */

package {
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.text.TextField;
  public class Extra1 extends Sprite {
    private var tf : TextField = new TextField();
    private var data : Array = [10, 15, 20, 0];
    public function Extra1(){
      addChild(tf);
      tf.width = 300;
      var LF : LineChart = new LineChart(300, 200, data);
      LF.x = 100;
      LF.y = 100;
      addChild(LF);
      addEventListener(Event.ENTER_FRAME, IconMove);
      data.push(25);
      LF.Change_Data(data);
    }
    private function IconMove(event:Event) : void {
      tf.text = "グローバルx座標:" + mouseX
                + "\nグローバルy座標:" + mouseY;
    }
  }
}
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
class LineChart extends Sprite {
  private var max_tf : TextField = new TextField();
  private var min_tf : TextField = new TextField();
  private var time_tf : TextField = new TextField();
  private var data : Array = [];
  private var Chart_width:Number;
  private var Chart_height:Number;
  private var max:Number = 0;
  private var min:Number = 0;
  private var s1:Sprite = new Sprite;
  function LineChart(_width:Number, _height:Number, _data:Array){
    this.data = _data;
    Chart_width = _width;
    Chart_height = _height;
    min_tf.y = _height - (_height / 10);
    addChild(max_tf);
    addChild(min_tf);
    max_tf.width = 300;
    graphics.lineStyle(0,0x777777);
    graphics.beginFill(0xe1e1e1);
    graphics.drawRect(0,0,_width,_height);
    graphics.endFill();
    Draw();
  }
  private function MaxMin():void{
      for(var i:int = 0;i < data.length;i++){
          if(max < data[i])max = data[i];
          if(min > data[i])min = data[i];
      }
      max_tf.text = ""+max;
      min_tf.text = ""+min;
      max_tf.x = 0 - (max_tf.length * 9);
      min_tf.x = 0 - (min_tf.length * 9);
  }
  private function Draw():void{
      MaxMin();
      for(var i:int = 0; i < data.length - 1; i++){
          var x:Number = Chart_width / (data.length - 1) * i;
          var next_x:Number = Chart_width / (data.length - 1) * (i+1);
          var y:Number = Chart_height / (max - min) * data[i];
          var next_y:Number = Chart_height / (max - min) * data[i+1];
          s1.graphics.lineStyle(2, 0x9acd32);        
          s1.graphics.moveTo(x, y);
          s1.graphics.lineTo(next_x, next_y);
          addChild(s1);
      }
  }
  public function Change_Data(_data:Array):void{
      data = _data;
      s1.graphics.clear();
      max = 0;
      min = 0;
      Draw();
  }

}