IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Pascal Discussion :

Stage et redimensionnement [Flash Pascal]


Sujet :

Flash Pascal

  1. #1
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut 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 : 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 ?

  2. #2
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    D'après ce que j'ai compris en fouillant un peu, il faut déjà ajouter :
    stag.scalemode:='noScale';
    Lorsque la valeur de Stage.scaleMode est "noScale" , width représente la largeur de Flash Player...

    et se servir de addListener...

    mais je n'y arrive toujours pas ...

  3. #3
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Alors je n'ai pas toutes les réponses mais il y a plusieurs erreurs dans ton code

    1) il faut utiliser l'objet "Stage" déclaré dans Flash8 qui est global comme "_root" et non déclarer un nouvel objet "Stag".

    2) onResize est un évènement, il n'est invoqué QUE quand on redimensionne le player ET (c'est dans la doc Adobe) quand Stage.scaleMode = "noScale". En effet, s'il existe un mode de mise à l'échelle, les dimensions internes ne changent pas, ce n'est que la projection à l'écran qui met tout à l'échelle.

    3) bien que ce ne soit pas indiqué dans la doc, je pense que _width et _height sont en lecture seule...je n'ai pas vu de cas où on pouvait les modifier en fait.

    or donc voici ce que ça donne

    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
     
    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)
       w, h: Number;
       procedure DoResize;
       procedure draw;
      end;
     
     var
       //**  stag:TStage;
         mc:mymc;
     
    procedure mymc.doResize;
    begin
     if _Height>stage.height then //si la hauteur du movie est >à la hauteur utile navigateur alors
     begin
       w := (stage.height*_width)/(_height); //garder les proportions en largeur
       h :=stage.height; //imposer la hauteur utile du navigateur pour éviter de déborder en bas
      end;
      //else....
      clear;
      draw; // redessiner à la nouvelle échelle
    end;
     
    procedure mymc.draw;
    begin
     beginFill($ff0000);
     moveto(0,0);
     lineto(w,0);
     lineto(w,h);
     lineto(0,h);
     lineto(0,0);
    end;
     
    begin
     mc:=mymc.create(nil,'mc',1);
    (*
     mc._x:=0;
     mc._y:=0;
     mc.width:=w;
     mc._height:=h;
    *)
     mc.w := w;
     mc.h := h;
     mc.draw; // dessin à l'échelle actuelle
     
     stage.scaleMode := 'noScale';
     stage.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.
    mais en fait, quand tu désactive le scaleMode, l'image n'est plus mise à l'échelle, donc ton code n'est pas adapté je pense
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    merci pour ta réponse, je regarde ça...

    Sans exemple, on rame un peu... Et fatalement, on fait pas ce qu'il faut.

    merci encore

    rq: oui width et height ne sont qu'en lecture seule. je confirme.

  5. #5
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    j'ai rectifié un peu le tir avec ce que tu m'as donné mais le redimensionnement ne se fait pas...

    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
     
    program stage;
     
    uses
     Flash8;
     
    {$FRAME_WIDTH   1024}
    {$FRAME_HEIGHT  768}
    {$BACKGROUND $ffffff}
     
    const
     wd=1024;
     hg=1024; //démesuré volontairement puisque en hauteur utile on a environ 570 pixels en format standard(1024x768)
     
    type
      mymc=class(movieclip)
       w, h: Number;
       procedure DoResize;
       procedure draw;
      end;
     
     var
         mc:mymc;
     
    procedure mymc.doResize;
    begin
     if _Height>stage.height then //si la hauteur du movie est >à la hauteur utile navigateur alors
     begin
       w := (stage.height*_width)/(_height); //garder les proportions en largeur
       h :=stage.height; //imposer la hauteur utile du navigateur pour éviter de déborder en bas
      end;
      clear;
      draw; // redessiner à la nouvelle échelle
    end;
     
    procedure mymc.draw;
    begin
     beginFill($ff0000);
     moveto(0,0);
     lineto(w,0);
     lineto(w,h);
     lineto(0,h);
     lineto(0,0);
    end;
     
    begin
     mc:=mymc.create(nil,'mc',1);
     mc.w := wd;
     mc.h := hg;
     mc.draw; // dessin à l'échelle actuelle
     stage.scaleMode := 'noScale';
     stage.onresize:=mc.doResize;
    end.

    je comprends un peu mieux maintenant...ce n'est pas encore ça mais je suis sur la bonne voie grâce à toi...

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    ce doit être une erreur dans la doc (ou dans mon compilateur ) il faut passer par addListener et du coup déclarer un onResize et non doResize.

    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
     
    program LeStage;
     
    uses
     Flash8;
     
    {$FRAME_WIDTH   1024}
    {$FRAME_HEIGHT  768}
    {$BACKGROUND $ffffff}
     
    const
     wd=1024;
     hg=1024; //démesuré volontairement puisque en hauteur utile on a environ 570 pixels en format standard(1024x768)
     
    type
      mymc=class(movieclip)
       w, h: Number;
       procedure onResize;
       procedure draw;
      end;
     
     var
         mc:mymc;
     
    procedure mymc.onResize;
    begin
     if _Height>stage.height then //si la hauteur du movie est >à la hauteur utile navigateur alors
     begin
       w := (stage.height*_width)/(_height); //garder les proportions en largeur
       h :=stage.height; //imposer la hauteur utile du navigateur pour éviter de déborder en bas
      end;
      clear;
      draw; // redessiner à la nouvelle échelle
    end;
     
    procedure mymc.draw;
    begin
    // beginFill($ff0000);
     lineStyle(1,$ff0000);
     moveto(0,0);
    // lineto(w,0);
     lineto(w,h);
    // lineto(0,h);
    // lineto(0,0);
    end;
     
    begin
     mc:=mymc.create(nil,'mc',1);
     mc.w := wd;
     mc.h := hg;
     mc.draw; // dessin à l'échelle actuelle
     stage.scaleMode := 'noScale';
     //stage.onresize:=mc.doResize;
     stage.addListener(mc);
    end.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Tu as encore trouvé la solution..
    Avec une remarquable facilité...
    Super, l'important c'est d'avoir trouvé une méthode.

    Nickel!

  8. #8
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Encore Bravo

  9. #9
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Merci, Archimède, d'avoir encore une fois posé la question qu'il fallait.

    Cependant pour ma part le problème n'est pas réglé. Seriez-vous d'accord pour reprendre tranquillement les choses du début?

    Voyez l'exemple suivant : un MovieClip de 300 sur 200, fond bleu, traversé par une diagonale rouge.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    program Exemple;
    uses
      Flash8;
    {$FRAME_WIDTH 300}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND $0000ff} 
    begin
      _root.lineStyle(1,$ff0000);
      _root.moveTo(0,0);
      _root.lineTo(300,200);
    end.
    J'ouvre l'aperçu (preview) : j'ai le résultat que j'attendais. Mais voici que j'ouvre le fichier .swf par un clic droit de la souris : Ouvrir avec... Google Chrome. Stupeur ! Ma diagonale n'a pas bougé, mais c'est tout l'écran qui est bleu, et non pas seulement mon rectangle. Pourquoi ?

  10. #10
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Je suis d'accord ...Tu m'as pris de vitesse

    De plus, tu as raison, c'est une question essentielle pour pouvoir sortir un fichier flash correctement...

  11. #11
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    tout simplement car $BACKGROUND c'est la couleur de fond du player
    elle peut d'ailleurs être remplacée par un attribut HTML si mon souvenir est bon.

    pour le fond d'un movieClip (y compris _root) c'est opaqueBackground

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    program Exemple;
    uses
      Flash8;
    {$FRAME_WIDTH 300}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND $0000ff}
    begin
      _root.lineStyle(1,$ff0000);
      _root.moveTo(0,0);
      _root.lineTo(300,200);
      _root.opaqueBackground := $00FF00;
    end.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  12. #12
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    tout simplement car $BACKGROUND c'est la couleur de fond du player
    Voilà qui est bon à savoir !

    Maintenant, si j'ajoute une ligne pour choisir le mode de redimensionnement, j'obtiens exactement ce que je voulais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    program Exemple;
    uses
      Flash8;
    {$FRAME_WIDTH 300}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND $0000ff}
    begin
      _root.lineStyle(1,$ff0000);
      _root.moveTo(0,0);
      _root.lineTo(300,200);
      _root.opaqueBackground := $00FF00;
      stage.scaleMode := 'noScale';
    end.

  13. #13
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    oui, c'est effectivement opaquebackground, j'ai cru au départ que t'avais comme moi un soucis de redimensionnement. J'avais lu trop vite...
    J'ai rajouté à ton code align:='T'; au départ il s'est centré en haut comme prévu et puis j'ai ajouté _root._x:=50; au début pour voir le comportement...
    je l'ai de nouveau effacé (_root._x:=50 et j'ai recompilé avec toujours le align... Et bien je n'avais plus de centrage horizontal ! J'étais dans le coin en haut à gauche.

    c'est pas clair... (une fois oui et une fois non)

  14. #14
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Archimède Voir le message
    oui, c'est effectivement opaquebackground, j'ai cru au départ que t'avais comme moi un soucis de redimensionnement.
    Mon souci c'était simplement de maîtriser l'affichage et d'empêcher le redimensionnement automatique. Le code ci-dessus donne un résultat qui me convient. Le MovieClip est au milieu de l'écran. Pour le moment, ça me suffit. Je cherche simplement une configuration standard que je puisse réutiliser pour tous mes programmes.

  15. #15
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Simplement, je t'explique mon objectif...:

    Dans l'idéal, je voudrais pouvoir éviter d'intégrer systématiquement mon fichier flash dans une page html pour le positionner où je veux et le dimensionner comme je veux.
    Dans une intégration fichier html, il n'y a aucun soucis...

    Mon but, c'est de pouvoir distribuer une animation centrée et optimisée dans la surface client du navigateur en swf donc j'ai besoin qu'il soit dans sa dimension optimale dans flashplayer...ce qui explique mon intérêt pour stage qui permet de gérer le fichier flash de sortie.

    align, onResize etc...

    ça me parait très important de pouvoir gérer ça pour la suite...voilà

    Par la suite, ce que je voudrais faire, c'est construire mes animations avec des dimensions qui soient définies en relatif par rapport à stage.width et stage.height. Ce serait génial non ?

  16. #16
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Archimède Voir le message
    Par la suite, ce que je voudrais faire, c'est construire mes animations avec des dimensions qui soient définies en relatif par rapport à stage.width et stage.height. Ce serait génial non ?
    Ce serait génial, c'est vrai, d'obtenir un affichage optimal quelle que soit la taille de l'écran. C'est une bonne idée, c'est même une nécessité.

    Je vais travailler un peu sur ton exemple et sur la version proposée par le chef pour voir si j'y comprends quelque chose.

  17. #17
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 130
    Billets dans le blog
    9
    Par défaut
    D'après l'exemple suivant, j'ai l'impression que les valeurs stage.height et stage.width correspondent tantôt aux dimensions du navigateur, tantôt aux dimensions indiquées dans FRAME_HEIGHT et FRAME_WIDTH au début du programme.

    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
    program stage_02; 
     
    uses
     Flash8;
    //{$FRAME_WIDTH 200}
    //{$FRAME_HEIGHT 200}
    {$BACKGROUND $9999ff}
     
    type
      mymc=class(movieclip)
        w,h:number;
        procedure resize;
        procedure draw;
      end;
     
    var
      mc:mymc;
     
    procedure mymc.resize;
      begin
        h := stage.height;
        w := stage.width;
      end;
     
    procedure mymc.draw;
      begin
        lineStyle(1,$ff0000);
        moveto(0,0);
        lineto(w,h);
      end;
     
    begin
      mc:=mymc.create(nil,'mc',1);
      mc.w := 100;
      mc.h := 100;
      mc.opaqueBackground := $ffffff;
      //mc.resize;//décommenter pour voir la différence
      //d'abord sans FRAME_WIDTH et FRAME_HEIGHT, puis avec
      mc.draw;
      stage.align:='T';
      stage.scaleMode :='noScale';
    end.

  18. #18
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Tu n'as pas d'événement onResize ni d'écouteur (addlistener) ça ne peut pas fonctionner... regarde la dernière discussion....
    Excuse moi de n'avoir pas répondu plus tôt, je n'avais pas vu que tu avais ajouté un message...

    @+

  19. #19
    Membre Expert
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Par défaut
    Je ne comprends pas, j'ai refait un essai avec le dernier code de Roland Chastain, là où il n'avait pas mis d'écouteur donc pas de resize...
    J'ai donc tenté de le modifier ci-joint :

    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
     
    program stage_02;
     
    uses
     Flash8;
    //{$FRAME_WIDTH 200}
    //{$FRAME_HEIGHT 200}
    {$BACKGROUND $9999ff}
     
    type
      mymc=class(movieclip)
        w,h:number;
        procedure resize;
        procedure draw;
      end;
     
    var
      mc:mymc;
     
    procedure mymc.resize;
    begin
        h := stage.height;
        w := stage.width;
        draw;
    end;
     
    procedure mymc.draw;
      begin
        clear;
        lineStyle(1,$ff0000);
        moveto(0,0);
        lineto(w,h);
      end;
     
    begin
     mc:=mymc.create(nil,'mc',1);
     mc.opaqueBackground := $ffffff;
     mc.resize;
     stage.align:='TL';
     stage.scaleMode :='noScale';
     stage.addListener(mc);
    end.
    Et bien là, il n'y a pas de redimension ?

  20. #20
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    c'est un des trucs auquels je réfléchie...comment s'assurer que le paramètre de addListener est une classe qui possède les bonnes méthodes...peut-être avec des warnings, car elles ne sont pas obligatoires.

    Or donc, Stage.addListener() attend en paramètre un objet qui possède les méthodes "onResize" (case sensitive) et/ou "onFullScreen"...comme ta classes ne possède ni l'un ni l'autre, il ne se passe rien

    ça pourrait donner ceci (actuellement non supporté)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    type
      IStageListener = interface
        procedure onResize;
        procedure onFullScreen(bFull: Boolean);
      end;
     
      Stage = external class
        ...
        class procedure AddListener(listener: IStageListener);
      end;
    dans la syntaxe Delphi, un objet qui implémente une interface doit déclarer toutes les méthodes de celle-ci, en Flash ça n'a aucune importance...du coup cette façon de déclarer me dérange...
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Kylix] Fenêtres non redimensionnables
    Par fred78 dans le forum EDI
    Réponses: 2
    Dernier message: 01/12/2002, 14h08
  2. [VB6] [Interface] Redimensionnement automatique
    Par ychalan dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2002, 18h32
  3. redimensionnement d'une JWindow
    Par mbp566 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/08/2002, 03h41
  4. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h40
  5. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo