<?xml version="1.0" encoding="utf-8"?> <dg:Surface xmlns:dg="com.degrafa.*" xmlns:geometry="com.degrafa.geometry.*" xmlns:paint="com.degrafa.paint.*" xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="updateData();"> <mx:Script> <![CDATA[ import mx.effects.Effect; [Bindable] public var dataChangeEffect:Effect = null; private var _data:Array = []; private var _scale:Number = 1; public function get scale() : Number { return _scale; } public function set scale( newScale:Number ) : void { _scale = newScale; updateData(); } public function get data() : Array { return _data; } public function set data( newData:Array ) : void { _data = newData; if ( initialized ) updateData(); if ( dataChangeEffect != null ) dataChangeEffect.play([this]); } private function updateData() : void { var min:Number = Number.MAX_VALUE var max:Number = Number.MIN_VALUE; for each ( var dp1:Number in _data ) { min = Math.min( dp1, min ); max = Math.max( dp1, max ); } var ybase:Number = min - ( ( max - min ) * 0.2 ); var yrange:Number = ( max - min ) * 1.4; var yscale:Number = height / yrange; var xscale:Number = width / ( _data.length - 1 ); var points:Array = []; points.push( new Point( 0, height ) ); var curx:Number = 0; for each ( var dp2:Number in _data ) { points.push( new Point( curx, height - ( ( ( dp2 - ybase ) * yscale ) * _scale ) ) ); curx += xscale; } points.push( new Point( width, height ) ); points.push( new Point( 0, height ) ); chartPoly.points = points; } ]]> </mx:Script> <dg:fills> <paint:LinearGradientFill id="backfill" angle="90"> <paint:GradientStop color="#000066" /> <paint:GradientStop color="black" /> </paint:LinearGradientFill> <paint:SolidFill id="solidblack" color="black" /> </dg:fills> <dg:strokes> <paint:SolidStroke id="axis" color="#cccccc" weight="2" /> <paint:SolidStroke id="chartstroke" color="#666666" weight="2" /> </dg:strokes> <dg:graphicsData> <dg:GeometryGroup> <geometry:RegularRectangle width="400" height="300" fill="{solidblack}" /> <geometry:Polygon id="chartPoly" fill="{backfill}" stroke="{chartstroke}" /> <geometry:VerticalLine y="0" y1="{height}" stroke="{axis}" /> <geometry:HorizontalLine y="{height}" x="0" x1="{width}" stroke="{axis}" /> </dg:GeometryGroup> </dg:graphicsData> </dg:Surface>