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
CIV. 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.
You need the libswf library to compile PHP with support for this extension. You can download libswf at ftp://ftp.sgi.com/sgi/graphics/grafica/flash/.
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.
이 확장 모듈은 php.ini 설정이 존재하지 않습니다.
이 확장 모듈은 리소스형을 정의하지 않습니다.
이 확장 모듈은 다음의 상수를 정의합니다. 이는 확장 모듈을 PHP에 내장했거나, 실행시에 동적으로 읽어들일 경우에만 사용할 수 있습니다.
- MOD_COLOR (integer)
- MOD_MATRIX (integer)
- TYPE_PUSHBUTTON (integer)
- TYPE_MENUBUTTON (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:
- 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 -- The height in pixels of a capital A and a lowercase x
- 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
Shockwave Flash Functions
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
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 :
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
in your autoexec.bat or autoexec.nt. Test it with echo %SWFFONTPATH%
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]
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.
This works also! Write into the script:
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)
I am using a Generator alternative Turbine - http://www.blue-pac.com - much cheaper than generator with a new version comming soon with builtin php support.
Quick patch for php 4.0.2 to enable sound.
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
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.
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