|
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
|