ci-joint un essai à partir de sound... Paul nous tend la perche

J'ai fait en fonction des outils que j'avais pour l'instant.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
118
119
120
121
 
program SoundPlayer2;
 
{$FRAME_WIDTH 550}
{$FRAME_HEIGHT 100}
{$FRAME_RATE 12}
{$BACKGROUND $FFFFFF}
 
uses
  Flash8,UVideoButton,Utrack;
 
type
 
TTrackbar1=class(TTrackbar)
 procedure onChange;override;
end;
 
TJauge=class(movieclip)
 e:number;
 mv:movieclip;
 constructor create(left,top,w,h:number; aowner:movieclip);
end;
 
MyScreen=class(movieclip)
   debut:boolean;
   tempo:number;
   btplay,btstop:TButton;
   constructor Create;
   procedure onPlay(sender:TObject);
   procedure onStop(sender:TObject);
   procedure onEnterFrame;override;
end;
 
var  player: Sound;
     Trackbar:TTrackbar1;
     jaugeprogress:TJauge;
 
Constructor TJauge.create(left,top,w,h:number; aowner:movieclip);
begin
 inherited Create(aowner,'jauge',aowner.getNextHighestDepth);
 _x:=left;
 _y:=top;
 linestyle(2,$A6D7F1);
 lineto(w,0);
 lineto(w,h);
 lineto(0,h);
 lineto(0,0);
 e:=h;
 
 mv:=movieclip.create(self,'mv',0);
 with mv do
 begin
  beginfill($80BDBE);
  lineto(w,0);
  lineto(w,e);
  lineto(0,e);
 end;
end;
 
Constructor MyScreen.Create;
begin
 inherited Create(_root,'screen',0);
 btplay:=TButton.Create(self,1,10,10,35,35);
 btstop:=TButton.Create(self,2,60,10,35,35);
 player := Sound.Create();
 btplay.onClick:=onPlay;
 btStop.onClick:=onStop;
 
 Trackbar:=TTrackbar1.Create(self,200,0,100,70,'horizontal');
 with Trackbar do
  begin
   _x:=125;
   _y:=20;
 end;
 
 jaugeprogress:=TJauge.Create(10,80,stage.width-20,5,self);
 
 player.loadSound('Klaus.mp3');
 tempo:=0;
 debut:=true;
end;
 
procedure MyScreen.onEnterFrame;
begin
 if debut=false then jaugeprogress.mv._xscale:=player.position*100/player.duration else jaugeprogress.mv._xscale:=0;
 tempo:=player.position/1000;
end;
 
procedure MyScreen.onPlay(sender:TObject);
begin
 with btplay.skin1 do _visible:=not _visible;
 with btplay.skin2 do _visible:=not _visible;
 if btplay.skin2._visible then
 begin
   if debut then
   begin
    player.start(0);
    debut:=false;
   end else player.start(tempo);
 end
   else player.stop;
end;
 
procedure MyScreen.onStop(sender:TObject);
begin
 tempo:=0;
 btplay.skin2._visible:=false;
 btplay.skin1._visible:=true;
 player.stop;
 debut:=true;
end;
 
Procedure TTrackbar1.onChange;
begin
 player.setVolume(Trackbar.position);
 
end;
 
begin
   MyScreen.Create;
end.
utrack :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
 
unit UTrack;
 
interface
uses Flash8;
 
 
type
 
   TTrackcur=class(MovieClip)
    orientation:string;
    xmouse,ymouse,trackmin,trackmax:number;
    xcur,ycur:Integer;
    downcur:Boolean;
    Procedure circle(Cx,Cy,Radius:number);
    constructor Create(AOWNER:Movieclip;trmin,trmax:number);
    procedure onPress;override;
    procedure onEnterFrame;override;
    procedure onMouseUp;override;
   end;
 
   TTrackbar=class(MovieClip)
   private
    w,h:number;
    state:string;
    procedure Roundrect(x,y,w,h,radius:number);
    procedure DrawTrackbar(Width,Height:number);
   public
    position:number;
    cur: TTrackcur;
    procedure onChange;virtual;
    constructor Create(AOWNER:Movieclip;FTaille,trmin,trmax,posi:number;Kind:string);
   end;
 
implementation
 
 
constructor TTrackcur.create(AOWNER:Movieclip;trmin,trmax:number);
 var matrix: Flash8.Matrix;
begin
  inherited Create(AOWNER,'cur',AOWNER.getNextHighestDepth);
  matrix := Flash8.Matrix.Create();
  matrix.createBox(1,1,0,10,14);
  linestyle(1,$87B6B7);
  beginGradientFill('radial',[$008080,clwhite],[100,100],[0,14],matrix);
  Circle(6,6,15);
  downcur:=false;
  xmouse:=0;
  ymouse:=0;
  trackmin:=trmin;
  trackmax:=trmax;
end;
 
constructor TTrackbar.Create(AOWNER:Movieclip;FTaille,trmin,trmax,posi:number;Kind:string);
begin
 inherited Create(AOWNER,'trackbar',AOWNER.getNextHighestDepth);
 w:=FTaille;
 state:=Kind;
 DrawTrackBar(w,12);
 cur:=TTrackcur.Create(self,trmin,trmax);
 cur.orientation:=Kind;
 position:=posi;
 if kind='horizontal' then
 begin
  cur._x:=(posi-trmin)*w/(trmax-trmin);
  cur._y:=0;
 end else
 if kind='vertical' then
 begin
  cur._y:=(trmax-posi)*w/(trmax-trmin);
  cur._x:=0;
 end;
end;
 
procedure TTrackbar.DrawTrackbar(Width, Height: number);
var matrix: Flash8.Matrix;
begin
 matrix := Flash8.Matrix.Create();
 if state='horizontal' then
 begin
  matrix.createGradientBox(width, height, Math.PI/2, 0, 0);
  beginGradientFill('linear',[$deedf6,$c4e5f6,$98d1ef,$66afd7],[100,100,100,100],[8,64,127,255],matrix);
  linestyle(2,$98d1ef);
  RoundRect(0,0,width,height,height/2);
 end else if state='vertical' then
 begin
  matrix.createGradientBox(height,width,0, 0, 0);
  beginGradientFill('linear',[$deedf6,$c4e5f6,$98d1ef,$66afd7],[100,100,100,100],[8,64,127,255],matrix);
  RoundRect(0,0,height,width,height/2);
  linestyle(2,$98d1ef);
 end;
end;
 
procedure  TTrackcur.onPress;
begin
 downcur:=true;
 xmouse:=_xmouse;
 ymouse:=_ymouse;
end;
 
procedure  TTrackcur.onEnterFrame;
var tr:TTrackbar;
begin
     tr:= TTrackbar(_parent);
 
     if downcur then
     if orientation='horizontal' then
     begin
      _x:= _x + _xmouse -xmouse;
      if _x<0 then _x:=0;
      if _x>tr.w then _x:=tr.w;
      tr.position:=_x*(trackmax-trackmin)/tr.w+trackmin;
     end
     else if orientation='vertical' then
     begin
      _y:= _y +_ymouse -ymouse;
      if _y<0 then _y:=0;
      if _y>tr.w then _y:=tr.w;
      tr.position:=trackmax-(_y*(trackmax-trackmin)/tr.w);
     end;
     tr.onChange;
end;
 
 
 
procedure  TTrackcur.onMouseUp;
begin
 downcur:=false;
end;
 
procedure TTrackbar.Roundrect(x,y,w,h,radius:number);
var
 ra,b:number;
begin
  ra := x + w;
  b := y + h;
  moveTo(x+radius, y);
  lineTo(ra-radius, y);
  CurveTo(ra,y, ra, y+radius);
  lineTo(ra, y+h-radius);
  CurveTo(ra, b, ra-radius, b);
  lineTo(x+radius, b);
  CurveTo(x, b,x, b-radius);
  lineTo(x, y+radius);
  CurveTo(x, y, x+radius,y);
end;
 
Procedure TTrackcur.circle(Cx,Cy,Radius:number);
var a,b,R: number;
begin
  R:=Radius;
  a:= R * 0.414213562;
  b:= R * 0.707106781;
  moveTo(Cx+R,Cy);
  CurveTo(Cx+ R, Cy+-a, Cx+b,Cy -b);
  CurveTo(Cx+ a,Cy-R,Cx,Cy -r);
  CurveTo(Cx-a,Cy -R,Cx-b,Cy -b);
  CurveTo(Cx-R, Cy-a,Cx-R,Cy);
  CurveTo(Cx-R,Cy+a,Cx-b,Cy+b);
  CurveTo(Cx-a,Cy +R,Cx,Cy+r);
  CurveTo(Cx+a,Cy +R,Cx+b,Cy+b);
  CurveTo(Cx+R,Cy+a,Cx+R,Cy);
end;
 
procedure TTrackbar.onChange;
begin
end;
 
end.
uvideobutton :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
Unit UVideoButton;
interface
 
uses Flash8;
 
type
  TButton=class(movieClip)
   Private
    w,h,fonction:number;
    procedure skin;
    procedure skin1playpause;
    procedure skin2stop;
    procedure skin3back;
    procedure skin4up;
   Public
    skin1,Skin2:movieclip;
    procedure onPress;override;
    procedure onClick;virtual;
    Constructor Create(parent:movieclip;nbskin,left,top,width,height:number);
  end;
 
implementation
 
Constructor TButton.Create(parent:movieclip;nbskin,left,top,width,height:number);
begin
  inherited Create(parent,'button', movieclip(parent).getNextHighestDepth());
  w:=width;
  h:=height;
  fonction:=nbskin;
  linestyle(3,$e0e0e0);
  BeginFill($c0c0c0);
  moveto(0,h);
  lineto(0,0);
  lineto(w,0);
  linestyle(3,$808080);
  lineto(w,h);
  lineto(0,h);
  skin;
  _x:=left;
  _y:=top;
end;
 
Procedure TButton. skin1playpause;
begin
  skin1:=movieclip.Create(self,'skin1',1);
  skin2:=movieclip.Create(self,'skin2',2);
  With skin1 do
  begin
   BeginFill(clBlack);
   linestyle(2,clBlack);
   moveto(w/4,h/4);
   lineto(3*w/4,h/2);
   lineto(w/4,3*h/4);
  end;
  With skin2 do
  begin
   linestyle(6,clBlack);
   moveto(7*w/20,h/4);
   lineto(7*w/20,3*h/4);
   moveto(13*w/20,h/4);
   lineto(13*w/20,3*h/4);
   _visible:=false;
  end;
end;
 
Procedure TButton. skin2stop;
begin
  BeginFill(clBlack);
  linestyle(2,clBlack);
  moveto(w/4,h/4);
  lineto(3*w/4,h/4);
  lineto(3*w/4,3*h/4);
  lineto(w/4,3*h/4);
  lineto(w/4,h/4);
end;
 
procedure TButton.skin3back;
begin
  linestyle(4,clBlack);
  moveto(3*w/4,h/4);
  Lineto(w/4,h/2);
  moveto(w/4,h/2);
  Lineto(3*w/4,3*h/4);
end;
 
procedure TButton.skin4up;
begin
 linestyle(4,clBlack);
 moveto(w/4,h/4);
 Lineto(3*w/4,h/2);
 moveto(3*w/4,h/2);
 Lineto(w/4,3*h/4);
end;
 
procedure TButton.skin;
begin
 case fonction of
  1:skin1playpause;
  2:skin2stop;
  3:skin3back;
  4:skin4up;
 end;
end;
 
procedure TButton.onClick;
begin
end;
 
procedure TButton.onPress;
begin
 onClick;
end;
 
end.
Ma question est comment faire l'équivalent d'une opendialog pour ouvrir un fichier mp3 à partir du lecteur ?