Stage et redimensionnement
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:
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 ?