RECHERCHE

Plan du site

BOURSE

 

RUBRIQUES

 
 TUTORIELS 
Les animations avec Ming

Page 1 | 2

Présentation de fonctions - telles que le changement de taille, le morping ou la transparence - pour la bibliothèque permettant de manipuler du Flash en PHP.
 (27 janvier 2003)
 

Lors de notre article "Découvrir Ming", nous terminions par une petite animation très simple: un carré qui tourne sur lui-même. L'article suivant nous donnait les outils pour créer des formes plus complexes. Nous allons aujourd'hui voir plus en profondeur les animations Flash créées à la volée en PHP à l'aide de la biliothèque Ming...

Nous allons ici aborder quatre types d'animation: le déplacement linéaire d'objet, le changement de la taille d'un objet, le morphing et la transparence. Nous ne verrons pas la rotation, que nous avons déjà abordé dans notre article d'introduction, et qui reste proche de ce que nous ferons ici. Nous verrons en revanche de nouvelles fonctions appliquées aux objets.

Déplacement linéaire
Notre objectif sera ici de créer un simple objet que ne ferons aller de droite à gauche sur notre scène. Certaines parties de notre code seront familières à ceux ayant déjà parcouru nos articles précédents sur Ming. Nous reprenons ainsi le carré de notre premier article, pour introduire quelques modifications, indiquées en gras dans le code suivant:

(fichier deplace1.php)
<?php
  $carre = new SWFShape();
  $carre->setRightFill($carre->addFill(0, 0, 255));
  $carre->movePenTo(-50, -50);
  $carre->drawLineTo(50, -50);
  $carre->drawLineTo(50, 50);
  $carre->drawLineTo(-50, 50);
  $carre->drawLineTo(-50, -50);

  $mc_carre = new SWFSprite();
  $temp = $mc_carre->add($carre);

  for ($i=0; $i<160; $i++)
    {
    $mc_carre->nextFrame();
    ($i<80) ? $temp->move(10,7.5) : $temp->move(-10,-7.5);
    }


  $swf = new SWFMovie();
  $swf->setDimension(800, 600);
  $swf->setBackground(0x00, 0x00, 0x00);

  $carreBouge = $swf->add($mc_carre);
  $carreBouge->moveTo(0,0);

  header('Content-type: application/x-shockwave-flash');
  $swf->output();
?>

La différence se trouve principalement dans notre boucle for(): en lieu et place de la fonction rotate(), nous avons utilisé la fonction move(), qui nous permet de déplacer notre carré par rapport à sa position précédente (comme nous l'avons déjà vu, la fonctione moveTo(), elle, déplacerait le carré dans les coordonnées globales).
Nous avons ajouté un petit test nous permettant d'inverser le déplacement de notre carré une fois que la "tête de lecture" a atteint l'image (frame) 80. Rien de bien compliqué, donc.

Le changement de taille
Reprenons notre script pour aborder la fonction scale():

(fichier déplace2.php)
(...)

  for ($i=0; $i<40; $i++)
    {
    $mc_carre->nextFrame();
    ($i<20) ? $temp->scale(1.2,1.3) : $temp->
scale(-1.2,-1.3);
    }

(...)

  $carreBouge->moveTo(400,300);

(...)

?>

En l'état actuel des choses (c'est à dire, la bibliothèque Ming étant pour l'heure experimentale), il ne semble pas possible de rétrécir un object avec la fonction scale(): le fait de lui donner des valeurs négatives donne le même résultat qu'avec des valeurs positives. Gageons que les versions à venir corrigeront ce problème...

Page 1 | 2

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page
 
 

 

 
 
[an error occurred while processing this directive]