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 :

Animation sur fond transparent


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Animation sur fond transparent
    Bonjour !

    Dans la bannière que Paul TOTH a postée ici et qu'on peut voir , il y a un bel effet de transparence qu'on ne remarque pas quand l'arrière-plan est blanc (ce qui est le cas sur le site de Paul et aussi sur le mien). En revanche, on aperçoit l'effet dans une démonstration que j'ai postée (pourvu qu'on ne l'exécute pas sur un fond blanc).

    Tout ce préambule pour demander comment on obtient une animation transparente, car je ne me souviens pas que ce point ait déjà été abordé.

  2. #2
    Expert éminent sénior
    Ah tient, c'est une drôle d'idée ça

    alors en fait, c'est simple mais pas supporté par tous les navigateurs, il suffit d'ajouter un paramètre dans le code HTML

    <embed type="application/x-shockwave-flash" src="flashpascal.swf" width="480" height="140" wmode="transparent"/>

    mon animation commence par dessiner un rectangle blanc qui n'est donc pas transparent, puis je joue sur _alpha pour le rendre transparent...mais en fait le fond blanc ne sert à rien, j'aurais pu tout aussi bien me contenter de jouer sur _alpha pour rendre ses enfants progressivement transparent.

    voici le code d'initialisation de cette pub:
    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
     
      fond := TFond.Create(_root, 'fond', 1);
      (*
      fond.beginFill(clWhite);
      fond.lineTo(Stage.Width, 0);
      fond.lineTo(Stage.Width, Stage.Height);
      fond.lineTo(0, Stage.Height);
      fond.endFill;
      *)
      Logo := MovieClip.Create(fond, 'logo', 2);
      Logo.attachBitmap(loadBitmap('img2'), 1);
     
      fp := MovieClip.Create(Logo, 'fp', 2);
      img := MovieClip.Create(fp, 'img', 1);
      img.attachBitmap(loadBitmap('img1'), 1, 'auto', true);
      img._x := -256/2;
      img._y := -256/2;


    en pièce jointe la version avec la portion de code ci-dessus en commentaire
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Merci Paul pour le code, les explications et la pièce jointe.

    J'ai modifié la page de mon site et fait un petit exemple séparé (pièce jointe).

    En fait, si je comprends bien, avec l'option wmode="transparent", la couleur indiquée dans la directive {$BACKGROUND ...} est tout simplement ignorée.

    J'ai observé un comportement semblable en visionnant les animations dans une application Delphi (composant TFlashViewerWindow) ; mais dans ce cas même le fond de l'application est transparent, ce qui fait qu'on voit le bureau (à moins qu'on ne dessine sur toute la surface).

  4. #4
    Rédacteur/Modérateur

    Citation Envoyé par Roland Chastain Voir le message
    En fait, si je comprends bien, avec l'option wmode="transparent", la couleur indiquée dans la directive {$BACKGROUND ...} est tout simplement ignorée.
    J'ai relu avec profit ce message :

    Citation Envoyé par Paul TOTH Voir le message
    FRAME_HEIGHT, et les autres directives de compilations ne sont pas du code exécutable. Ce sont des attributs du fichier SWF qui sont traités par le player au chargement de l'animation.

    Stage.height au contraire est une donnée dynamique qui indique les dimensions actuelles de la fenêtre.

    En fait, normalement au lancement Stage.height = FRAME_HEIGHT, et quand Stage.height change le onResize est déclenché.

###raw>template_hook.ano_emploi###