Je crois que je n'ai pas tout compris en ce qui concerne l'objet stage...
En effet pour moi, il s'agit de la surface utile du navigateur.
Et si je veux optimiser la scène d'un fichier flash, j'ai besoin le plus souvent de fixer la hauteur de mon movie à la hauteur utile du navigateur et de recalculer proportionnellement sa largeur...

Donc, j'ai fait un essai le plus simple possible dans un premier temps :

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
 
program stage;
 
uses
 Flash8;
 
{$FRAME_WIDTH   1024}
{$FRAME_HEIGHT  768}
{$BACKGROUND $ffffff}
 
const
 w=1024;
 h=1024; //démesuré volontairement puisque en hauteur utile on a environ 570 pixels en format standard(1024x768)
 
type
  mymc=class(movieclip)
   procedure DoResize;
  end;
 
 var
     stag:TStage;
     mc:mymc;
 
procedure mymc.doResize;
begin
 if _Height>stag.height then //si la hauteur du movie est >à la hauteur utile navigateur alors
 begin
   _width := (stag.height*_width)/(_height); //garder les proportions en largeur
   _height :=stag.height; //imposer la hauteur utile du navigateur pour éviter de déborder en bas
  end;
  //else....
 
end;
 
begin
 mc:=mymc.create(nil,'mc',1);
 mc._x:=0;
 mc._y:=0;
 mc._width:=w;
 mc._height:=h;
 stag.onresize:=mc.doResize;//on teste la hauteur avant de dessiner et on redimensionne
 mc.beginFill($ff0000);
 mc.moveto(0,0);
 mc.lineto(mc._width,0);
 mc.lineto(mc._width,mc._height);
 mc.lineto(0,mc._height);
 mc.lineto(0,0);
end.
Ma question : je n'ai pas tout compris... Pourquoi ça ne marche pas ?