Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg

PHP : Function Reference : Shockwave Flash Functions

Shockwave Flash Functions


PHP offers the ability to create Shockwave Flash files via Paul Haeberli's libswf module.


SWF support was added in PHP 4 RC2.

The libswf does not have support for Windows. The development of that library has been stopped, and the source is not available to port it to another systems.

For up to date SWF support take a look at the MING functions.


This extension has been moved to the » PECL repository and is no longer bundled with PHP as of PHP 5.0.0.


You need the libswf library to compile PHP with support for this extension. You can download libswf at »


Once you have libswf all you need to do is to configure --with-swf[=DIR] where DIR is a location containing the directories include and lib. The include directory has to contain the swf.h file and the lib directory has to contain the libswf.a file. If you unpack the libswf distribution the two files will be in one directory. Consequently you will have to copy the files to the proper location manually.

Runtime Configuration

This extension has no configuration directives defined in php.ini.

Resource Types

This extension has no resource types defined.

Predefined Constants

The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.

MOD_COLOR (integer)
MOD_MATRIX (integer)
BSHitTest (float)
BSDown (float)
BSOver (float)
BSUp (float)
OverDowntoIdle (integer)
IdletoOverDown (integer)
OutDowntoIdle (integer)
OutDowntoOverDown (integer)
OverDowntoOutDown (integer)
OverUptoOverDown (integer)
OverUptoIdle (integer)
IdletoOverUp (integer)
ButtonEnter (integer)
ButtonExit (integer)
MenuEnter (integer)
MenuExit (integer)


Once you've successfully installed PHP with Shockwave Flash support you can then go about creating Shockwave files from PHP. You would be surprised at what you can do, take the following code:

Example 2503. SWF example

("test.swf", 256, 256, 30, 1, 1, 1);
swf_ortho2(-100, 100, -100, 100);
swf_defineline(1, -70, 0, 70, 0, .2);
swf_definerect(4, 60, -10, 70, 0, 0);
swf_definerect(5, -60, 0, -70, 10, 0);
swf_addcolor(0, 0, 0, 0);

swf_definefont(10, "Mod");
swf_definetext(11, "This be Flash wit PHP!", 1);

swf_translate(-50, 80, 0);
swf_placeobject(11, 60);

for (
$i = 0; $i < 30; $i++) {
$p = $i/(30-1);
swf_scale(1-($p*.9), 1, 1);
swf_rotate(60*$p, 'z');
swf_translate(20+20*$p, $p/1.5, 0);
swf_rotate(270*$p,  'z');
swf_addcolor($p, 0, $p/1.2, -$p);
swf_placeobject(1, 50);
swf_placeobject(4, 50);
swf_placeobject(5, 50);

for (
$i = 0; $i < 30; $i++) {
   if ((
$i%4) == 0) {



Table of Contents

swf_actiongeturl — Get a URL from a Shockwave Flash movie
swf_actiongotoframe — Play a frame and then stop
swf_actiongotolabel — Display a frame with the specified label
swf_actionnextframe — Go forward one frame
swf_actionplay — Start playing the flash movie from the current frame
swf_actionprevframe — Go backwards one frame
swf_actionsettarget — Set the context for actions
swf_actionstop — Stop playing the flash movie at the current frame
swf_actiontogglequality — Toggle between low and high quality
swf_actionwaitforframe — Skip actions if a frame has not been loaded
swf_addbuttonrecord — Controls location, appearance and active area of the current button
swf_addcolor — Set the global add color to the rgba value specified
swf_closefile — Close the current Shockwave Flash file
swf_definebitmap — Define a bitmap
swf_definefont — Defines a font
swf_defineline — Define a line
swf_definepoly — Define a polygon
swf_definerect — Define a rectangle
swf_definetext — Define a text string
swf_endbutton — End the definition of the current button
swf_enddoaction — End the current action
swf_endshape — Completes the definition of the current shape
swf_endsymbol — End the definition of a symbol
swf_fontsize — Change the font size
swf_fontslant — Set the font slant
swf_fonttracking — Set the current font tracking
swf_getbitmapinfo — Get information about a bitmap
swf_getfontinfo — Gets font information
swf_getframe — Get the frame number of the current frame
swf_labelframe — Label the current frame
swf_lookat — Define a viewing transformation
swf_modifyobject — Modify an object
swf_mulcolor — Sets the global multiply color to the rgba value specified
swf_nextid — Returns the next free object id
swf_oncondition — Describe a transition used to trigger an action list
swf_openfile — Open a new Shockwave Flash file
swf_ortho2 — Defines 2D orthographic mapping of user coordinates onto the current viewport
swf_ortho — Defines an orthographic mapping of user coordinates onto the current viewport
swf_perspective — Define a perspective projection transformation
swf_placeobject — Place an object onto the screen
swf_polarview — Define the viewer's position with polar coordinates
swf_popmatrix — Restore a previous transformation matrix
swf_posround — Enables or Disables the rounding of the translation when objects are placed or moved
swf_pushmatrix — Push the current transformation matrix back unto the stack
swf_removeobject — Remove an object
swf_rotate — Rotate the current transformation
swf_scale — Scale the current transformation
swf_setfont — Change the current font
swf_setframe — Switch to a specified frame
swf_shapearc — Draw a circular arc
swf_shapecurveto3 — Draw a cubic bezier curve
swf_shapecurveto — Draw a quadratic bezier curve between two points
swf_shapefillbitmapclip — Set current fill mode to clipped bitmap
swf_shapefillbitmaptile — Set current fill mode to tiled bitmap
swf_shapefilloff — Turns off filling
swf_shapefillsolid — Set the current fill style to the specified color
swf_shapelinesolid — Set the current line style
swf_shapelineto — Draw a line
swf_shapemoveto — Move the current position
swf_showframe — Display the current frame
swf_startbutton — Start the definition of a button
swf_startdoaction — Start a description of an action list for the current frame
swf_startshape — Start a complex shape
swf_startsymbol — Define a symbol
swf_textwidth — Get the width of a string
swf_translate — Translate the current transformations
swf_viewport — Select an area for future drawing

Code Examples / Notes » ref.swf


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


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)


There are 2 prerequisites that must be met to run the test program:
1.) The directory where the test program resides in must be writeable to the PHP user (depending on installation either the apache user (module version of PHP4) or the script owner)
2.) The fonts directory from the swflib  distribution must be in the same dir as the test script file  so when the test file is  foo/swftest.php  the fonts dir should be  foo/fonts/ containing Mod.f and Mod.l    
Otherwise you will get a segfault when executing the test program.


Quick patch for php 4.0.2 to enable sound.

mark dijkman the netherlands

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!

manuel dot leiner

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
Then log out and in again and restart apache. Then you should be able to use flash text functions within PHP.


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


I am using a Generator alternative Turbine - - much cheaper than generator with a new version comming soon with builtin php support.


Hot to make it right.
I have a /kit/php4 folder
I made a flash folder into that folder. Looks like
Here made 2 folders called lib and include
Copy libswf.a in lib folder and swf.h in include folder
go to /kit/php4 folder and ./configure --with-swf=flash [--add your other configure params]
make install
works great
Note. In fact I have all unziped swf kit in /kit/php4/flash folder and I added the new 2 folder [lib and include]. Then copy specified files into them.


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 :
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! =)


Fonts must be in the directory named "fonts". Lets see... if your code is in /www/swf.php4, you sould make a directory /www/fonts. If you use the example above, copy the files dist/fonts/Mod.f and dist/fonts/Mod.l of the source distribution to into /www/fonts/ to use the font Mod. I think you can use also SET_SWF_FONTS or similar

Change Language

Follow Navioo On Twitter
.NET Functions
Apache-specific Functions
Alternative PHP Cache
Advanced PHP debugger
Array Functions
Aspell functions [deprecated]
BBCode Functions
BCMath Arbitrary Precision Mathematics Functions
PHP bytecode Compiler
Bzip2 Compression Functions
Calendar Functions
CCVS API Functions [deprecated]
Class/Object Functions
Classkit Functions
ClibPDF Functions [deprecated]
COM and .Net (Windows)
Crack Functions
Character Type Functions
Cybercash Payment Functions
Credit Mutuel CyberMUT functions
Cyrus IMAP administration Functions
Date and Time Functions
DB++ Functions
Database (dbm-style) Abstraction Layer Functions
dBase Functions
DBM Functions [deprecated]
dbx Functions
Direct IO Functions
Directory Functions
DOM Functions
DOM XML Functions
enchant Functions
Error Handling and Logging Functions
Exif Functions
Expect Functions
File Alteration Monitor Functions
Forms Data Format Functions
Fileinfo Functions
filePro Functions
Filesystem Functions
Filter Functions
Firebird/InterBase Functions
Firebird/Interbase Functions (PDO_FIREBIRD)
FriBiDi Functions
FrontBase Functions
FTP Functions
Function Handling Functions
GeoIP Functions
Gettext Functions
GMP Functions
gnupg Functions
Haru PDF Functions
hash Functions
Hyperwave Functions
Hyperwave API Functions
i18n Functions
IBM Functions (PDO_IBM)
iconv Functions
ID3 Functions
IIS Administration Functions
Image Functions
Imagick Image Library
Informix Functions
Informix Functions (PDO_INFORMIX)
Ingres II Functions
IRC Gateway Functions
PHP / Java Integration
JSON Functions
LDAP Functions
libxml Functions
Lotus Notes Functions
LZF Functions
Mail Functions
Mailparse Functions
Mathematical Functions
MaxDB PHP Extension
MCAL Functions
Mcrypt Encryption Functions
MCVE (Monetra) Payment Functions
Memcache Functions
Mhash Functions
Mimetype Functions
Ming functions for Flash
Miscellaneous Functions
mnoGoSearch Functions
Microsoft SQL Server Functions
Microsoft SQL Server and Sybase Functions (PDO_DBLIB)
Mohawk Software Session Handler Functions
mSQL Functions
Multibyte String Functions
muscat Functions
MySQL Functions
MySQL Functions (PDO_MYSQL)
MySQL Improved Extension
Ncurses Terminal Screen Control Functions
Network Functions
Newt Functions
NSAPI-specific Functions
Object Aggregation/Composition Functions
Object property and method call overloading
Oracle Functions
ODBC Functions (Unified)
ODBC and DB2 Functions (PDO_ODBC)
OpenAL Audio Bindings
OpenSSL Functions
Oracle Functions [deprecated]
Oracle Functions (PDO_OCI)
Output Control Functions
Ovrimos SQL Functions
Paradox File Access
Parsekit Functions
Process Control Functions
Regular Expression Functions (Perl-Compatible)
PDF Functions
PDO Functions
Phar archive stream and classes
PHP Options&Information
POSIX Functions
Regular Expression Functions (POSIX Extended)
PostgreSQL Functions
PostgreSQL Functions (PDO_PGSQL)
Printer Functions
Program Execution Functions
PostScript document creation
Pspell Functions
qtdom Functions
Rar Functions
GNU Readline
GNU Recode Functions
RPM Header Reading Functions
runkit Functions
SAM - Simple Asynchronous Messaging
Satellite CORBA client extension [deprecated]
SCA Functions
SDO Functions
SDO XML Data Access Service Functions
SDO Relational Data Access Service Functions
SESAM Database Functions
PostgreSQL Session Save Handler
Session Handling Functions
Shared Memory Functions
SimpleXML functions
SNMP Functions
SOAP Functions
Socket Functions
Standard PHP Library (SPL) Functions
SQLite Functions
SQLite Functions (PDO_SQLITE)
Secure Shell2 Functions
Statistics Functions
Stream Functions
String Functions
Subversion Functions
Shockwave Flash Functions
Swish Functions
Sybase Functions
TCP Wrappers Functions
Tidy Functions
Tokenizer Functions
Unicode Functions
URL Functions
Variable Handling Functions
Verisign Payflow Pro Functions
vpopmail Functions
W32api Functions
WDDX Functions
win32ps Functions
win32service Functions
xattr Functions
xdiff Functions
XML Parser Functions
XML-RPC Functions
XMLReader functions
XMLWriter Functions
XSL functions
XSLT Functions
YAZ Functions
YP/NIS Functions
Zip File Functions
Zlib Compression Functions
eXTReMe Tracker