-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDRCourse.as
93 lines (70 loc) · 2.46 KB
/
DRCourse.as
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
class DRCourse {
static var course:DRCourse;
var forwardCurve: DRCurve;
var backwardCurve:DRCurve;
var drawCurve: DRCurve;
var clip:MovieClip;
var ribs:Array;
function DRCourse() {
forwardCurve = new DRCurve();
backwardCurve = new DRCurve();
drawCurve = new DRCurve();
ribs = new Array();
display();
DRCourse.course = this;
}
function display() {
clip = _root.createEmptyMovieClip("Course", 0);
clip.createEmptyMovieClip("display", 0);
clip.createEmptyMovieClip("ribs", 1);
clip.createEmptyMovieClip("curves", 2);
clip.createEmptyMovieClip("controlPoints", 3);
clip.createEmptyMovieClip("vehicles", 4);
forwardCurve.display( clip.curves, DRCurve.EDGE );
backwardCurve.display( clip.curves, DRCurve.EDGE );
drawCurve.display( clip.curves, DRCurve.CENTER );
}
function addPoint(x:Number, y:Number, trailX:Number, trailY:Number) {
var lastRib = ribs[ ribs.length - 1 ];
// var lastX = trailX;
// var lastY = trailY;
var lastX = lastRib.centerHandle.x;
var lastY = lastRib.centerHandle.y;
var angle = Math.atan2(lastY - y, lastX - x);
if (angle < 0) angle += 2.0 * Math.PI;
var newRib = new DRRib(this, x, y, angle);
ribs.push(newRib);
newRib.display(clip.ribs, clip.controlPoints);
}
function loop() {
ribs.shift();
forwardCurve.loop();
backwardCurve.loop();
drawCurve.controlPoints.shift();
drawCurve.loop();
}
function draw(style:String) {
forwardCurve.draw();
backwardCurve.draw();
drawCurve.draw();
for (var i = 0; i < ribs.length; i++) {
ribs[i].draw();
}
}
function setVisibility(visibility:String) {
if (visibility == "all") {
clip.ribs._alpha = 100;
clip.curves._alpha = 100;
clip.controlPoints._alpha = 100;
drawCurve.clip._alpha = 100;
} else if (visibility == "course") {
clip.ribs._alpha = 0
clip.curves._alpha = 100;
clip.controlPoints._alpha = 0;
drawCurve.clip._alpha = 0;
}
}
function ribMoved(rib:DRRib) {
draw();
}
}