Hello,

j'ai un petit soucis... dans un premier temps, je pensais que l'affectation d'un tableau faisait planter flashpascal... et puis j'ai tenté ça :

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
 
program affectationtableau;
 
uses
  Flash8;
 
const T=100; 
 
{$FRAME_WIDTH 1000}
{$FRAME_HEIGHT 400}
{$BACKGROUND $eeeeff}
 
type 
 TEssaitableau=class(movieclip)
  Constructor Create;
 end; 
 
var
  mytab: array[1..1000,1..2] of integer;
  essai:TEssaitableau;
 
constructor TEssaitableau.Create;
var i:integer;
begin
 inherited create(nil,'essai',1);
 _y:=200;
 
 linestyle(3,$000000);
 moveto(0,0);
 lineto(1000,0);
 moveto(500,-200);
 lineto(500,200);
 
 for i:=1 to 1000 do 
 begin
  mytab[i,1]:=i;
  mytab[i,2]:=floor(100*sin(-2*3.14*i/T));
 end;
 
 linestyle(2,$ff00ff);
 moveto(0,0);
 for i:=1 to 1000 do lineto(mytab[i,1],mytab[i,2]);
end;   
 
begin
 essai:=TEssaitableau.Create;
end.
Donc pas de soucis avec les tableaux bien que l'utilisation d'un tableau dynamique ne semble pas possible (pas de setlength)

alors je voulais tracer une cycloïde avec ma roue... le but était qu'elle puisse se tracer à mesure que la roue avance...je n'ai pas trouvé la solution pour l'instant. Je me suis donc rabattu sur une cycloïde déjà tracée dans sol.

ci-joint code :
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
 
program roue;
 
uses Flash8,math;
 
const R=80;
      e=4;
 
{$FRAME_WIDTH 1000}
{$FRAME_HEIGHT 200}
{$FRAME_RATE 100}
{$BACKGROUND $008080}
 
type 
 
  TRayon =class(MovieClip)
    constructor Create(parent: MovieClip);
  end;  
 
  TRoue = class(MovieClip)
    Rayon: TRayon;
    constructor Create(parent: MovieClip);
    procedure onEnterFrame;
  end;
 
 
  TSol=class(MovieClip)
   roue:TRoue;
   constructor Create;
  end; 
 
 
var retour:boolean;
    dtheta:double;
    trajectoire:array[1..1000,1..2] of integer;// tableau dynamique inutilisable pas de setlength (1000 au pif)
    //pas de tableau de TPoint-> Tpoint n'existe pas (point dans actionscript ? pourtant)- pas de possibilité d'en faire non plus-> pas de record.
    sol:TSol;      
 
constructor TSol.Create;
var i,nb:integer;
begin
 inherited Create(nil,'sol',1);
 
 nb:=floor(1000/(R*dtheta));//nombre d'avancées par frame_rate sur la largeur
 
 for i:=1 to nb do 
 begin
  trajectoire[i,1]:=floor(i*R*dtheta);   //coord.x  point cycloïde
  trajectoire[i,2]:=floor(R*SIN(-i*dtheta));  //coord.y  le moins pour le sens trigo
 end; 
 
 lineStyle(e,$FFFBF0);
 moveto(0,100);
 for i:=1 to nb do  lineto(trajectoire[i,1],trajectoire[i,2]);
 
 BeginFill($FFFBF0);
 moveto(0,180+e);
 lineto(1000,180+e);
 lineto(1000,185+e);
 lineto(0,185+e);
 lineto(0,180+e);
 EndFill();
 roue:=TRoue.create(self);
end;   
 
 
constructor TRoue.Create(parent:MovieClip);
var a,b:double;
begin
  inherited Create(parent,'roue', 1);
  _x := R;
  _y := 100;
  a:= r * 0.414213562;
  b:= r * 0.707106781;
  lineStyle(2*e, $FFFBF0);
  moveTo(r, 0);
  curveTo( r, -a, +b, -b);
  curveTo( a, -r, 0, -r);
  curveTo(-a, -r, -b, -b);
  curveTo(-r, -a, -r, 0);
  curveTo(-r, +a, -b, +b);
  curveTo(-a, +r, 0, +r);
  curveTo( a, +r, +b, +b);
  curveTo( r, +a, +r, 0);
  EndFill();
  retour:=true;
  dtheta:=3.14/180;
  Rayon := TRayon.Create(self);
end;
 
 
constructor TRayon.Create(Parent: MovieClip);
begin
  inherited Create(parent,'rayon',1);
  lineStyle(e,$FFFBF0);
  moveto(-R,0);
  lineto(0,0);
  moveto(0,-R);
  lineto(0,R);
  lineStyle(e,$ff0000);
  moveto(0,0);
  lineto(R,0);
end;
 
 
procedure TRoue.onEnterFrame;                                                                                         
var j:integer;
begin
 
  if retour then
  begin
   _x := _x + R*dtheta;
   Rayon._rotation:=Rayon._rotation +1; //1°
  end
  else
  begin
   _x:= _x -R*dtheta  ;
   Rayon._rotation:=Rayon._rotation -1;
  end;
 
  if (_x+R>=1000) or (_x-R<=0) then retour:=not retour; //modif <=0 ! sinon quand la valeur est nulle,c'est indéfini... 
end;
 
begin
  sol:= TSol.Create;
end.
le principe étant le même que le tracé de courbe précédent... et bien ça plante...

pourquoi ?

Si on ne peut pas affecter un tableau sans que flashplayer soit chatouillé, ça s'annonce difficile...


a+