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 :

Preview correcte mais résultat flash différent


Sujet :

Flash Pascal

  1. #1
    Membre expérimenté
    Preview correcte mais résultat flash différent
    Je me suis essayé à un motif papier millimétré... le résultat obtenu dans la preview est satisfaisant mais le fichier flash généré est complétement différent...
    Le changement d'échelle pose soucis...

    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
    43
    44
     
    program motifppmilli;
     
    uses
      Flash8;
     
    {$FRAME_WIDTH 1000}
    {$FRAME_HEIGHT 500}
    {$BACKGROUND $ffffff}
     
    var
      i:integer;
      bmp: BitmapData;
      m:matrix;
      image:movieclip;
    begin
       image:=movieclip.create(nil,'ppmillimetre',1);
       image.linestyle(3,$4091CE);
       image.moveto(0,0);
       image.lineto(100,0);
       image.moveto(0,0);
       image.lineto(0,100);
       image.linestyle(1,$4091CE);
       For i:=1 to 9 do
       begin
        image.moveto(0,10*i);
        image.lineto(100,10*i);
        image.moveto(10*i,0);
        image.lineto(10*i,100);
       end;
       //fin motif
       bmp:=Bitmapdata.create(100,100);
       bmp.draw(image);
       image._visible:=false; 
       m:=matrix.create();
       m.CreateBox(0.5,0.5,0,0,0);    //scalex 50% et scaley 50% echelle 1/2 du motif
      _root.beginBitmapFill(bmp,m);
      _root.moveto(0,0);
      _root.lineto(1000, 0);
      _root.lineto(1000,500);
      _root.lineto(0,500);
      _root.lineto(0,0);
      _root.EndFill();  
    end.


    ? décidément, ça n'arrive qu'à moi...

  2. #2
    Rédacteur/Modérateur

    Il est beau ton papier millimétré. Le mien est plus rudimentaire:

    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
    program Exemple; { papier "millimétré" }
    uses Flash8;
     
    {$FRAME_WIDTH 500}
    {$FRAME_HEIGHT 500}
    {$BACKGROUND $ffffff}
     
    var
      n: Integer;
     
    begin
      _root.lineStyle(1,$FF9900);
     
      for n:=0 to 119 do
        begin
          _root.moveTo( 4 * n + 10, 10);
          _root.lineTo( 4 * n + 10, 490);
          _root.moveTo( 10, 4 * n + 10);
          _root.lineTo(490, 4 * n + 10);
        end;
      _root.moveTo(10,490);
      _root.lineTo(490,490);
      _root.lineTo(490,10);
     
    end.


    Je crois que je me servirai du tien plutôt.

  3. #3
    Rédacteur/Modérateur

    J'ai ajouté des dessins sur ton papier. Je trouve le résultat très bon.

    Pour revenir au sujet de la discussion : j'ai ouvert ensuite le fichier Flash que j'avais obtenu avec le logiciel dont je me sers, qui s'appelle SWF Opener. On peut choisir entre 4 "scale modes" : "show all", "exact fit", "no border", "no scale". Avec l'option "no scale", l'image est correcte ; avec les autres non.

    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
    program motifppmilli_plus_dessin;
     
    uses
      Flash8, Math;
     
    {$FRAME_WIDTH 500}
    {$FRAME_HEIGHT 500}
    {$BACKGROUND $ffffff}
     
    var
      i:integer;
      bmp: BitmapData;
      m:matrix;
      image:movieclip;
      x,y: Number;
      angle: Number;
     
    const
      pi = 3.1415926535897932;
     
    procedure fPoint(xp,yp:Number);
    { faux point }
    begin
      _root.moveTo(xp,yp);
      _root.lineTo(xp+1,yp+1);
    end;
     
    begin
       image:=movieclip.create(nil,'ppmillimetre',1);
       image.linestyle(3,$4091CE);
       image.moveto(0,0);
       image.lineto(100,0);
       image.moveto(0,0);
       image.lineto(0,100);
       image.linestyle(1,$4091CE);
       For i:=1 to 9 do
       begin
        image.moveto(0,10*i);
        image.lineto(100,10*i);
        image.moveto(10*i,0);
        image.lineto(10*i,100);
       end;
       //fin motif
       bmp:=Bitmapdata.create(100,100);
       bmp.draw(image);
       image._visible:=false; 
       m:=matrix.create();
       m.CreateBox(0.5,0.5,0,0,0);    //scalex 50% et scaley 50% echelle 1/2 du motif
      _root.beginBitmapFill(bmp,m);
      _root.moveto(0,0);
      _root.lineto(500, 0);
      _root.lineto(500,500);
      _root.lineto(0,500);
      _root.lineto(0,0);
      _root.EndFill();
     
     
      // Repère
      _root.lineStyle(1,$000000);
      _root.moveTo(-200+250,   0+250);
      _root.lineTo(+200+250,   0+250);
      _root.moveTo(0+250   ,-200+250);
      _root.lineTo(0+250   ,+200+250);
     
      // Parabole
      _root.lineStyle(1,$F00000);
      x:=-200;
      while (x<200) do
        begin
          y:=-x*x/100;
          if abs(y)<200 then fPoint(x+250,y+250);
          x:=x+1;
        end;
     
      // Arc de cercle
      _root.lineStyle(1,$0000F0);  
      angle:=pi/2;
      while (angle<3*pi/2) do
        begin
          x := 200 + 100 * cos(angle);
          y :=   0 - 100 * sin(angle);
          fPoint(x+250,y+250);
          angle:=angle+pi/200;
        end;
     
       // Droite coupant le cercle
      _root.lineStyle(1,$F000F0);
      x:=-200;
      while (x<200) do
        begin
          y := -x / 2 + 30;
          // La droite change de couleur au moment où elle coupe le cercle
          if floor(sqrt((x-200)*(x-200) + y*y)) = 100 then _root.lineStyle(1,$00AA00);
          fPoint(x+250,y+250);
          x:=x+1;
        end;
     
    end.

  4. #4
    Expert éminent sénior
    Bonjour,

    c'est assez logique, un Bitmap est de taille figée, si tu agrandis le player, contrairement à une image vectorielle les pixels sont étirés

    tu peux limiter la casse avec le paramètre Smooth qui donnera cependant un effet de flou.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
      _root.beginBitmapFill(bmp,m, True, True);


    au passage j'utilise personnellement FlashPlayer.exe qu'on peut télécharger sur le site Adobe (renommez l'executable au besoin est placez au même endroit que EditPascal.exe)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre expérimenté
    Merci effectivement, sur ce genre de motif très serré, le mode points n'est pas adapté... Autant le réaliser directement en vectoriel dans un movieclip, au moins on a pas de surprise...
    J'avais déjà téléchargé flashplayer mais je n'ai pas pensé à l'introduire dans le même répertoire que flashpascal. C'était évident...dans ton menu tu avais uses player. Merci.

    Pour Roland Chastain, je pense qu'il vaut mieux faire ton quadrillage ppmillimétré directement dans le movieclip pour la raison citée plus haut. C'est vrai que c'était bien pratique puisque c'est un motif...

  6. #6
    Expert éminent sénior
    en même temps je ne l'avais pas précisé il fallait lire les sources de la version OpenSource pour le savoir...ça fait maigre comme documentation

    en fait l'option "Compile" s'assure que le code est valide et l'option "Run" lance le preview ou fait un ShellExecute du Player selon que la case "use Player" est cochée ou non.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre expérimenté
    Ok, merci pour cette précision... Je n'avais pas chercher à mettre mon nez dans les sources de flashpascal puisque ce qui m'intéresse, c'est l'utilisation. Le reste, c'est une affaire de spécialiste comme toi. A chacun sa place...

  8. #8
    Rédacteur/Modérateur

    Citation Envoyé par Paul TOTH Voir le message
    renommez l'executable au besoin et placez-le au même endroit que EditPascal.exe
    Citation Envoyé par Paul TOTH Voir le message
    l'option "Compile" s'assure que le code est valide et l'option "Run" lance le preview ou fait un ShellExecute du Player selon que la case "use Player" est cochée ou non.
    Ça fonctionne.

  9. #9
    Membre expérimenté
    Ok pour moi aussi

###raw>template_hook.ano_emploi###