source: code/Website/open-flash-chart/charts/Arrow.as

Last change on this file was 7849, checked in by dennisw, 15 years ago
File size: 1.8 KB
RevLine 
[7849]1package charts {
2 import flash.display.Sprite;
3 import flash.geom.Point;
4 import string.Utils;
5
6 public class Arrow extends Base {
7
8 private var style:Object;
9
10 public function Arrow( json:Object )
11 {
12 this.style = {
13 start: [],
14 end: [],
15 colour: '#808080',
16 alpha: 0.5,
17 'barb-length': 20
18
19 };
20
21 object_helper.merge_2( json, this.style );
22
23 this.style.colour = string.Utils.get_colour( this.style.colour );
24
25// for each ( var val:Object in json.values )
26// this.style.points.push( new flash.geom.Point( val.x, val.y ) );
27 }
28
29 public override function resize( sc:ScreenCoordsBase ): void {
30
31 this.graphics.clear();
32 this.graphics.lineStyle(1, this.style.colour, 1);
33
34 this.graphics.moveTo(
35 sc.get_x_from_val(this.style.start.x),
36 sc.get_y_from_val(this.style.start.y));
37
38 var x:Number = sc.get_x_from_val(this.style.end.x);
39 var y:Number = sc.get_y_from_val(this.style.end.y);
40 this.graphics.lineTo(x, y);
41
42 var angle:Number = Math.atan2(
43 sc.get_y_from_val(this.style.start.y) - y,
44 sc.get_x_from_val(this.style.start.x) - x
45 );
46
47 var barb_length:Number = this.style['barb-length'];
48 var barb_angle:Number = 0.34;
49
50 //first point is end of one barb
51 var a:Number = x + (barb_length * Math.cos(angle - barb_angle));
52 var b:Number = y + (barb_length * Math.sin(angle - barb_angle));
53
54 //final point is end of the second barb
55 var c:Number = x + (barb_length * Math.cos(angle + barb_angle));
56 var d:Number = y + (barb_length * Math.sin(angle + barb_angle));
57
58 this.graphics.moveTo(x, y);
59 this.graphics.lineTo(a, b);
60
61 this.graphics.moveTo(x, y);
62 this.graphics.lineTo(c, d);
63
64 }
65 }
66}
Note: See TracBrowser for help on using the repository browser.