My favorites
▼
|
Sign in
floz
floz's stuff
Project Home
Downloads
Wiki
Issues
Source
Checkout
Browse
Changes
Source path:
svn
/
trunk
/
OFFLINE
/
RIBBONS
/
lib
/
degres05.as
r583
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// Frame label "formules & repères"
function toDegres( value:Number ):Number
{
return ( value * 180 / Math.PI );
}
function toRadians( value:Number ):Number
{
return ( value * Math.PI / 180 );
}
function drawRepere( r:Shape ):void
{
r.graphics.lineStyle( 1, 0x00FF00 );
r.graphics.moveTo( 0, -100 );
r.graphics.lineTo( 0, 100 );
r.graphics.endFill();
r.graphics.lineStyle( 1, 0x00FF00 );
r.graphics.moveTo( -100, 0 );
r.graphics.lineTo( 100, 0 );
r.graphics.endFill();
}
// Frame label "process"
var test:Boolean;
var affiche:Boolean;
var p1x:Number = 0;
var p1y:Number = 0;
var p2x:Number = 0;
var p2y:Number = 0;
var link1x:Number;
var link1y:Number;
var link2x:Number;
var link2y:Number;
var radians:Number = 0;
var s:Shape = new Shape();
addChild( s );
var result:Sprite = new Sprite();
addChild( result );
result.mouseChildren =
result.mouseEnabled = false;
stage.addEventListener( MouseEvent.CLICK, onClick );
function onClick( e:MouseEvent ):void
{
if( !test )
{
p1x = stage.mouseX;
p1y = stage.mouseY;
s.graphics.clear();
s.graphics.lineStyle( 1, 0xbbbbbb );
s.graphics.moveTo( p1x, p1y );
test = true;
addEventListener( Event.ENTER_FRAME, onFrame );
}
else
{
removeEventListener( Event.ENTER_FRAME, onFrame );
test = false;
}
}
function onFrame( e:Event ):void
{
p2x = stage.mouseX;
p2y = stage.mouseY;
drawSegment( p1x, p1y, p2x, p2y, Math.atan2( p2y - p1y, p2x - p1x ) );
p1x = p2x;
p1y = p2y;
}
function drawSegment( x1:Number, y1:Number, x2:Number, y2:Number, a:Number ):void
{
s.graphics.clear();
var dx:Number = x2 - x1;
var dy:Number = y2 - y1;
var diametre:Number = Math.sqrt( dx * dx + dy *dy );
var rayon:Number = diametre * .5;
var g:Graphics = result.graphics;
var posX:Number = Math.cos( toRadians( 30 ) ) * rayon;
var posY:Number = Math.sin( toRadians( 30 ) ) * rayon;
var ox:Number = x1 + dx * .5;
var oy:Number = y1 + dy * .5;
g.lineStyle( 1, 0x0000ff );
g.moveTo( link2x ? link2x : rayon * Math.cos( Math.atan2( -posY, -posX ) + a ) + ox, link2y ? link2y : rayon * Math.sin( Math.atan2( -posY, -posX ) + a ) + oy );
g.lineTo( link1x ? link1x : rayon * Math.cos( Math.atan2( posY, -posX ) + a ) + ox, link1y ? link1y : rayon * Math.sin( Math.atan2( posY, -posX ) + a ) + oy );
g.lineTo( rayon * Math.cos( Math.atan2( posY, posX ) + a ) + ox, rayon * Math.sin( Math.atan2( posY, posX ) + a ) + oy );
g.lineTo( rayon * Math.cos( Math.atan2( -posY, posX ) + a ) + ox, rayon * Math.sin( Math.atan2( -posY, posX ) + a ) + oy );
g.lineTo( link2x ? link2x : rayon * Math.cos( Math.atan2( -posY, -posX ) + a ) + ox, link2y ? link2y : rayon * Math.sin( Math.atan2( -posY, -posX ) + a ) + oy );
g.endFill();
link1x = rayon * Math.cos( Math.atan2( posY, posX ) + a ) + ox;
link1y = rayon * Math.sin( Math.atan2( posY, posX ) + a ) + oy;
link2x = rayon * Math.cos( Math.atan2( -posY, posX ) + a ) + ox;
link2y = rayon * Math.sin( Math.atan2( -posY, posX ) + a ) + oy;
}
Show details
Hide details
Change log
r398
by Florian.Zumbrunn on Sep 21, 2009
Diff
[No log message]
Go to:
.../OFFLINE/RIBBONS/lib/degres01.as
.../OFFLINE/RIBBONS/lib/degres02.as
.../OFFLINE/RIBBONS/lib/degres03.as
.../OFFLINE/RIBBONS/lib/degres04.as
.../OFFLINE/RIBBONS/lib/degres05.as
Project members,
sign in
to write a code review
Older revisions
All revisions of this file
File info
Size: 3111 bytes, 117 lines
View raw file
Powered by
Google Project Hosting