PHP: Shockwave Flash関数 - Manual
PHP  
downloads | documentation | faq | getting help | mailing lists | | php.net sites | links | my php.net 
search for in the  
<sqlite_unbuffered_queryswf_actiongeturl>
view the version of this page
Last updated: Tue, 21 Dec 2004

CXI. Shockwave Flash関数

導入

PHPは、Paul Haeberliが作成したlibswfモジュールによりShockwave Flashファイルを作成する機能を提供します。

注意: SWFサポートは、PHP 4 RC2で追加されました。

libswf は、Windows でサポートされていません。このライブラリの開発 は中止されており、他のシステムへ移植するためのソースは入手できま せん。

最新のSWFサポートについては、 MING関数を参照して下さい。

要件

PHPでこの拡張モジュールを使用するようコンパイルするためには、 libswfライブラリを必要とします。 libswfをでダウンロードす ることができます。

インストール手順

libswfを入手した後にするべきことは、configureに --with-swf[=DIR]を指定することだ けです。ただし、DIRはディレクトリincludeおよびlibを有する場所です。 ディレクトリincludeにはファイルswf.hが、ディレクトリlibにはファイ ルlibswf.aがある必要があります。libswfの配布ファイルを展開した際に は、二つのファイルは一つのディレクトリにあります。結果的にファイル を適当な場所に手動でコピーする必要があります。

実行用の設定

この拡張モジュールは設定ディレクティブを全く定義しません。

リソース型

この拡張モジュールはリソース型を全く定義しません。

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールが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)

PHPをShockwave Flashサポート付きでインストールした後は、 ShockwaveファイルをPHPから作成することができるようになります。 何ができるかが分かると驚かされることでしょう。次のコードを見て下さい。

例 1. SWFの例

<?php
swf_openfile
("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_fontsize (5);
swf_fontslant (10);
swf_definetext (11, "This be Flash wit PHP!", 1);

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

for (
$i = 0; $i < 30; $i++) {
  
$p = $i/(30-1);
  
swf_pushmatrix ();
  
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);
  
swf_popmatrix ();
  
swf_showframe ();
}

for (
$i = 0; $i < 30; $i++) {
  
swf_removeobject (50);
   if ((
$i%4) == 0) {
      
swf_showframe ();
   }
}

swf_startdoaction ();
swf_actionstop ();
swf_enddoaction ();

swf_closefile ();
?>

目次
swf_actiongeturl --  Shockwave FlashムービーからURLを得る
swf_actiongotoframe --  フレームを実行した後、停止する
swf_actiongotolabel --  指定したラベルを有するフレームを表示する
swf_actionnextframe --  フレームを一つ進める
swf_actionplay --  カレントのフレームからflashムービーの実行を開始する
swf_actionprevframe --  フレームを一つ戻す
swf_actionsettarget --  アクションのコンテキストを設定する
swf_actionstop --  カレントのフレームでflashムービーの実行を終了する
swf_actiontogglequality --  クオリティのローとハイを切替える
swf_actionwaitforframe --  フレームがロードされていない場合にアクションをスキップする
swf_addbuttonrecord --  カレントのボタンの位置、外観、アクティブエリアを制御する
swf_addcolor --  グローバル加算色を指定したrbga値に設定する
swf_closefile --  カレントのShockwave Flashファイルを閉じる
swf_definebitmap --  ビットマップを定義する
swf_definefont --  フォントを定義する
swf_defineline --  線を定義する
swf_definepoly --  ポリゴンを定義する
swf_definerect --  長方形を定義する
swf_definetext --  テキスト文字列を定義する
swf_endbutton --  カレントのボタンの定義を終了する
swf_enddoaction --  カレントのアクションを終了する
swf_endshape --  カレントの形状の定義を完結する
swf_endsymbol --  シンボルの定義を終了する
swf_fontsize --  フォントの大きさを変更する
swf_fontslant --  フォントの傾きを設定する
swf_fonttracking --  カレントのフォントのトラッキングを設定する
swf_getbitmapinfo --  ビットマップに関する情報を得る
swf_getfontinfo --  大文字のAと小文字のxの高さをピクセル単位で得る
swf_getframe --  カレントのフレームのフレーム番号を得る
swf_labelframe --  カレントのフレームにラベルを付ける
swf_lookat --  視点変換を定義する
swf_modifyobject --  オブジェクトを修正する
swf_mulcolor --  グローバル乗算色を指定したrbga値に設定する
swf_nextid --  次の未使用のオブジェクトIDを返す
swf_oncondition --  アクションリストのトリガとして使用されるトランジションを定義する
swf_openfile --  新規にShockwave Flashファイルをオープンする
swf_ortho2 --  ユーザ座標の2D直交マッピングをカレントのビューポイントに定義する
swf_ortho --  カレントのビューポートにおけるユーザー座標の直交マッピングを定義する
swf_perspective --  遠近法による投影変換を定義する
swf_placeobject --  オブジェクトを画面に配置する
swf_polarview --  極座標で視点を定義する
swf_popmatrix --  以前の変換行列を回復する
swf_posround --  オブジェクトを配置または移動する際の変換時の丸め処理を有効または無効にする
swf_pushmatrix --  カレントの変換行列をスタックに入れる
swf_removeobject --  オブジェクトを削除する
swf_rotate --  カレントの座標を回転する
swf_scale --  カレントの変換をスケリーングする
swf_setfont --  カレントのフォントを変更する
swf_setframe --  指定したフレームに切替える
swf_shapearc --  円弧を描画する
swf_shapecurveto3 --  3次ベジエ曲線を描画する
swf_shapecurveto --  2点間に2次ベジエ曲線を描画する
swf_shapefillbitmapclip --  カレントの塗りつぶしモードをクリップ付きビットマップ
swf_shapefillbitmaptile --  カレントの塗りつぶしモードをタイル状のビットマップに設定する
swf_shapefilloff --  塗りつぶしをオフにする
swf_shapefillsolid --  カレントの塗りつぶし色を指定した色に設定する
swf_shapelinesolid --  カレントの行のスタイルを設定する
swf_shapelineto --  線を描画する
swf_shapemoveto --  カレントの位置を移動する
swf_showframe --  カレントのフレームを表示する
swf_startbutton --  ボタンの定義を開始する
swf_startdoaction --  カレントのフレームのアクションリストの記述を開始する
swf_startshape --  複雑な形状を開始する
swf_startsymbol --  シンボルを定義する
swf_textwidth --  文字列の幅を得る
swf_translate --  カレントの座標軸を変換する
swf_viewport --  描画を行う範囲を選択する


add a note add a note User Contributed Notes
Shockwave Flash関数
vivid at bwteam dot org
15-Nov-2004 01:52
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
Mark Dijkman The Netherlands
13-Jan-2004 11:16
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 AT gmx DOT de
28-Jul-2002 11:20
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.
daemorhedron
06-Mar-2002 06:50
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! =)
daemorhedron@
06-Mar-2002 12:47
For those more interested in swf this website can be of use :

HTH!
seek at byte-net dot ro
26-Jan-2001 01:06
Hot to make it right.
I have a /kit/php4 folder
I made a flash folder into that folder. Looks like
/kit/php4/flash
Here made 2 folders called lib and include
/kit/php4/flash/include
/kit/php4/flash/lib
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
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.
isu at tozsdeforum dot hu
16-Jan-2001 04:11
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
mike at nux dot co dot uk
20-Dec-2000 03:22
I am using a Generator alternative Turbine - - much cheaper than generator with a new version comming soon with builtin php support.
tbma at usa dot net
28-Oct-2000 02:32
Quick patch for php 4.0.2 to enable sound.

boris at gamate dot com
06-Oct-2000 06:14
For some other examples goto
ghisha at inwind dot it
05-Sep-2000 03:02
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")
adobernig at netway dot at
11-Jul-2000 04:09
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.
kawa at gui dot uva dot es
06-Jul-2000 01:23
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

<sqlite_unbuffered_queryswf_actiongeturl>
 Last updated: Tue, 21 Dec 2004
show source | credits | sitemap | contact | advertising | mirror sites 
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: /
Last updated: Mon Mar 14 08:13:06 2005 Local time zone must be set--see zic manual page