I am using ActiveSWF toolkit to produce dynamic Flash movies from XML. I like it, because only I need to produce new dynamic movie is new XML. PHP code is the same. Additionally, it has quite good documentation. See http://www.activeswf.com
CLV. Shockwave Flash
Introduction
PHP a la capacité de créer des animations Shockwave Flash grâce au module de Paul Haeberli : libswf module.
Note : Le support de SWF a été ajouté en PHP 4 RC2.
La bibliothèque libswf ne propose pas de support pour Windows. Le développement de cette bibliothèque a été stoppé, et la source n'est pas disponible pour assurer le portage vers les autres systèmes.
Pour une version plus à jour d'extension SWF, regardez donc les fonctions MING.
Note : Cette extension a été déplacée dans le module PECL et ne sera plus intégrée dans PHP à partir de PHP 5.0.0.
Pré-requis
Vous avez besoin de la bibliothèque libswf pour compiler PHP avec le support de cette extension. Vous pouvez télécharger cette bibliothèque ftp://ftp.sgi.com/sgi/graphics/grafica/flash/.
Installation
Une fois que vous avez libswf, tout ce qui reste à faire est de configurer PHP avec --with-swf[=DIR] où DIR est le dossier qui accueille les dossiers de include et lib. Le dossier include doit contenir le fichier swf.h file et le dossier lib doit contenir le fichier libswf.a. Si vous décompressez la distribution de libswf, les deux fichiers seront dans le même dossier. Par conséquent, vous devrez les mettre dans le dossier ad hoc manuellement.
Configuration à l'exécution
Cette extension ne définit aucune directive de configuration.
Types de ressources
Cette extension ne définit aucune ressource.
Constantes pré-définies
Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.
- MOD_COLOR (entier)
- MOD_MATRIX (entier)
- TYPE_PUSHBUTTON (entier)
- TYPE_MENUBUTTON (entier)
- BSHitTest (float)
- BSDown (float)
- BSOver (float)
- BSUp (float)
- OverDowntoIdle (entier)
- IdletoOverDown (entier)
- OutDowntoIdle (entier)
- OutDowntoOverDown (entier)
- OverDowntoOutDown (entier)
- OverUptoOverDown (entier)
- OverUptoIdle (entier)
- IdletoOverUp (entier)
- ButtonEnter (entier)
- ButtonExit (entier)
- MenuEnter (entier)
- MenuExit (entier)
Exemples
Une fois que vous avez réussi à installer PHP avec Shockwave Flash, vous pouvez créer des animations Flash avec PHP. Vous serez surpris du résultat. Essayez donc ceci :
- Table des matières
- swf_actiongeturl -- Retourne l'URL d'une animation Shockwave Flash
- swf_actiongotoframe -- Joue un cadre puis stoppe
- swf_actiongotolabel -- Joue le cadre Flash spécifié
- swf_actionnextframe -- Avance d'un cadre
- swf_actionplay -- Joue l'animation Flash à partir du cadre courant
- swf_actionprevframe -- Recule d'un cadre
- swf_actionsettarget -- Fixe le contexte des actions
- swf_actionstop -- Arrête l'animation Flash
- swf_actiontogglequality -- Choisit le niveau de qualité de l'animation Flash
- swf_actionwaitforframe -- Ignore les actions si le cadre Flash n'est pas chargé
- swf_addbuttonrecord -- Contrôle la situation, l'apparence et la zone active du bouton Flash courant
- swf_addcolor -- Fixe la couleur globale d'addition Flash (? : the global add color)
- swf_closefile -- Ferme le fichier courant Shockwave Flash
- swf_definebitmap -- Définit une image bitmap
- swf_definefont -- Définit une police Flash
- swf_defineline -- Définit une ligne
- swf_definepoly -- Définit un polygone Flash
- swf_definerect -- Définit un rectangle
- swf_definetext -- Définit une chaîne de texte
- swf_endbutton -- Termine la définition du bouton Flash courant
- swf_enddoaction -- Termine l'action courante
- swf_endshape -- Complète la définition de la forme Flash courante
- swf_endsymbol -- Termine la définition de symbole
- swf_fontsize -- Change la taille de la police
- swf_fontslant -- Change l'inclinaison de la police courante
- swf_fonttracking -- Change l'espacement des caractères
- swf_getbitmapinfo -- Lit les informations sur une image
- swf_getfontinfo -- Retourne la hauteur du A majuscule, et du x minuscule
- swf_getframe -- Retourne le numéro de cadre courant
- swf_labelframe -- Nomme le cadre courant
- swf_lookat -- Définit une transformation de vue
- swf_modifyobject -- Modifie un objet Flash
- swf_mulcolor -- Fixe la couleur globale de multiplication (? : the global multiply color)
- swf_nextid -- Retourne le prochain identifiant d'objet libre
- swf_oncondition -- Décrit la transition utilisée pour déclencher une liste d'actions
- swf_openfile -- Ouvre un nouveau fichier Shockwave Flash
- swf_ortho2 -- Définit une projection orthogonale à 2 dimensions entre les coordonnées utilisateur et le port courant
- swf_ortho -- Définit une projection orthogonale entre les coordonnées utilisateur et le port courant
- swf_perspective -- Définit une projection orthogonale à 3 dimensions entre les coordonnées utilisateur et le port courant
- swf_placeobject -- Place un objet sur la scène
- swf_polarview -- Définit le point de vue de l'utilisateur en coordonnées polaires
- swf_popmatrix -- Dépile la matrice de transformation
- swf_posround -- Active l'approximation des translations d'objets Flash
- swf_pushmatrix -- Empile la matrice de transformations courante dans la pile
- swf_removeobject -- Enlève un objet
- swf_rotate -- Rotation de la transformation courante
- swf_scale -- Homothétie
- swf_setfont -- Change la police courante
- swf_setframe -- Fixe le cadre courant
- swf_shapearc -- Dessine un arc de cercle
- swf_shapecurveto3 -- Dessine une courbe Bézier cubique
- swf_shapecurveto -- Dessine une courbe de Bézier quadratique entre deux points
- swf_shapefillbitmapclip -- Choisit le mode de remplissage Flash par texture
- swf_shapefillbitmaptile -- Choisit le mode de remplissage par texture Flash répétée
- swf_shapefilloff -- Désactive le remplissage de formes Flash
- swf_shapefillsolid -- Fixe la couleur pour le style courant de remplissage Flash
- swf_shapelinesolid -- Fixe le style courant de ligne
- swf_shapelineto -- Dessine une ligne
- swf_shapemoveto -- Change la position courante
- swf_showframe -- Affiche le cadre courant
- swf_startbutton -- Commence la définition d'un bouton
- swf_startdoaction -- Commence la description d'une liste d'actions pour le cadre courant
- swf_startshape -- Commence une forme complexe
- swf_startsymbol -- Définit un symbole
- swf_textwidth -- Retourne la longueur d'une chaîne
- swf_translate -- Translate la transformation courante
- swf_viewport -- Sélectionne une nouvelle zone pour un dessin ultérieur
Let's not forget to mention there IS another alternative to Swf-lib and Ming. It's called FreeMovie and is created by Jacek Artymiak from O'Reilly. This piece of art is made out of PHP-files only wich makes it suitable for many platforms. The project is also available via SourceForge as freemovie-php.
Thumbs up for that one!
Just to mention for users of SuSE 8.0. libswf is included with the distro with no fonts. Therefore you must "patch" libswf support. As I didn't find the solution here before and I found a solution I am posting this fix:
Download the libswf package and uncompress to a directory (e.g. /usr/share/php/swf). Then include
"
SWFFONTPATH=/path/to/fonts
export SWFFONTPATH
"
Then log out and in again and restart apache. Then you should be able to use flash text functions within PHP.
For those having problems with libswf fonts you can add a system wide variable to point to the fonts dir in your shell.
In linux open up /etc/profile and add the lines :
SWFFONTPATH=/path/to/fonts
export SWFFONTPATH
Please not all of that is case sensitive, so copy it carefully. Logout and log back in to see changes (should affect all users). Test it from the command line with echo $SWFFONTPATH
For windows users you should be able to add
SET SWFFONTPATH=/path/to/fonts
in your autoexec.bat or autoexec.nt. Test it with echo %SWFFONTPATH%
HTH! =)
This works also! Write into the script:
putenv ("SWFFONTPATH=/path_to_swf/fonts");
Maybe you can do the job with apache somehow, but it did't work for me. (With getenv it looked ok, but the swf failed to find the font)
isu
Writing on directory is not required. You can generate a run-time movie .. by replacing swf_openfile("<filename>", .... ) with swf_openfile("php://stdout", ....) and add before that an
Header("Content-type: application/x-shockwave-flash")
