PHPでSWFの生成

2008.08.30 Author: Jas

ユーザの入力内容や属性情報によって、動的に変化するFlashサイトを作れたら・・・便利ですよね?
PHPには、SWFを作成するためのMingと呼ばれるライブラリが用意されており、それを利用すると動的なムービーを生成することが可能です。

今回は、PHPとMingを利用して、swfを生成する方法を簡単にご紹介します。
(ただし、Mingを利用するには別途インストール作業が必要ですので、マニュアルを参考に環境を準備してください。)

// 新規SWFムービーの作成
$movie = new SWFMovie();

// swfのサイズ(width, height)
$movie->setDimension(100, 100);

// 背景色(RGB)
$movie->setbackground(0, 200, 225);

まずは新規のSWFムービーを生成し、サイズと背景色を指定します。
背景色の指定はRGBで指定でき、0 から 255 までの整数値か、あるいは 0x00 から 0xFF までの十六進値が有効となります。

これで、濃水色背景のムービーができました。

// 新規図形の生成
$shape = new SWFShape();

//塗りつぶしの色(RGB)
$fill = $shape->addFill(200, 100, 150);
$shape->setRightFill($fill);

// 描画の起点(絶対座標)
$shape->movePenTo(5, 8);

// □の描画
$shape->drawLine(10, 0);
$shape->drawLine(0, 10);
$shape->drawLine(-10, 0);
$shape->drawLine(0, -10);

空のムービーに図形を描画します。
塗りつぶし色も背景色と同様、RGBで指定します。
次にmovePenTo()で起点を移動し、drawLine()で図形を描画します。
このとき、movePen()を使うとカレント座標からの相対座標となります。

// フォントの指定
$font = new SWFFont("font/fontname.fdb");
$text = new SWFText();
$text->setFont($font);

// 座標と色、サイズの指定
$text->moveTo(10, 20);
$text->setColor(225, 225, 0);
$text->setHeight(10);

// 文字列
$text->addUTF8String("しゃいんブログ");

次に文字列の描画です。
文字列を出力するためのフォントは.ttfから.fdbに変換する必要があります。
フォントと座標、色、サイズなどを指定したら、addUTF8String()で文字列を追加します。

ここで気づくかと思いますが、日本語を扱う場合にはスクリプトをUTF-8で書いてください。
そうしないと、日本語は文字化けするか、出力すらされなくなります。

// swfの出力
header('Content-type: application/x-shockwave-flash');
$movie->output();

// swfの保存
$movie->save("swf/test.swf");

最後に、生成したSWFの出力/保存です。
これで画面に生成されたSWFが表示され、指定フォルダにSWFファイルが保存されたはずです。

簡単に紹介しましたが、PHP+Mingを使えばこんなに簡単にSWFを生成することができます。
スクリプト中にはfor文や条件分岐なども使えるので、これらを組み合わせればもっと複雑な描画が可能になります。

このほかにも画像の表示やフレームの追加もできるので、ぜひ試してみてください。

[参考]
http://codezine.jp/a/article/aid/706.aspx

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ