Mingを使用すれば簡単にFlashのswfファイルを作成することができます. 本ページではLinux上でのMing/perlのインストール,および簡単な作成法を紹 介したいと思います.

Menu

ダウンロード

Mingの本家サイトはhttp://ming.sourceforge.net/ です.現在の最新版は 0.3 (2006/02/15)となっています.ここから次のファイルをダウ ンロードしてください.perlモジュールは別ファイルになりました.

ming-0.3.0.tar.gz
ming-perl-0.3.0.tar.gz
ttf2fft-1.0.tar.gz

インストール

まず,Mingではいくつかのライブラリを使用しますので必要なら本体の前 にそれらをインストールしておきます.生成されたswfのサイズを小さくする zlib,png画像を扱うlibpng,gif画像を扱うlibungifです.これらを使用しな い場合は,設定ファイルを修正する必要があるので後で説明します.ちなみに debianの場合は以下のパッケージが必要でした.

zlib1g-dev
libpng-dev
libungif4-dev

本体とperlモジュールのファイルを展開します.

$ tar zxf ming-0.3.0.tar.gz
$ tar zxf ming-perl-0.3.0.tar.gz
$ cd ming-0.3.0

先程述べたように,zlibなどのライブラリが必要ない場合は src/ming_config.h を修正します.

#define USE_ZLIB 1
#define USE_GIF 1
#define USE_PNG 1

必要のないライブラリの値を1から0に書き換えてください.

次にコンパイルし,インストールしますが,perl/Ming だけが必要な場合 は本体をインストールしなくてもよいみたいです.perl_ext のディレクトリに移動し,通常のperlモジュールと同じ方法でインストールし てください.

$ cd perl_ext
$ perl Makefile.PL
 (本体がコンパイルされる)
$ make
 (perlモジュールがコンパイルされる)
$ make test
 (正常に動くかチェック)
$ su
$ make install

これでperlモジュールのインストールは終わりです.次の日本語フォント を扱う準備をします.フォントはTrueType形式のものを用意し,それをMingか ら使用できる形式にコンバートします.簡単に図示すると,

*.ttf ---------> *.fft --------> *.fdb
       ttf2fft          makefdb

順番は逆になりますが,makefdbのコンパイルから説明します.makefdbは ming-0.3.0 に付属しています.

$ cd ming-0.3.0/util
$ make makefdb

makefdb がこのディレクトリにできます.

ttf2fft は最初にダウンロードした ttf2fft-1.0.tar.gz を展開し, コンパイルします.

$ tar zxf ttf2fft-1.0.tar.gz
$ cd ttf2fft
$ make

ttf2fft がこのディレクトリにできます.

さて日本語をフォントを用意します.ここではKochiGothic-Regular.ttfを 例に進めていきます.まずttf2fftを使用してフォントの情報を表示させます.

$ ./ttf2fft -l KochiGothic-Regular.ttf
There is 1 face in this file.

----- Face number: 0 -----

   family: Kochi Gothic
   style:  Regular
   charmaps:
   0: platform: Apple Unicode, encoding: Unicode 2.0
   1: platform: Macintosh, encoding: Roman
   2: platform: Microsoft, encoding: Unicode

MingではUnicodeのコードマップを使用するので,上記では0か2のマップを 選択して,fft形式に変換します.

$ ./ttf2fft -e 0 KochiGothic-Regular.ttf
Converting font KochiGothic-Regular.ttf
    family: Kochi Gothic
    style:  Regular
using charmap:   0: platform: Apple Unicode, encoding: Unicode 2.0
....

これで KochiGGothic.fft というファイルができました.最後に makefdb を使用してfdb形式に変換します.

$ makefdb KochiGGothic.fft
Found DefineFont2 block at offset 23
Block length: 3922457
Writing Kochi Gothic.fdb, 3922459 bytes

ようやく``Kochi Gothic.fdb''ができました.ただ何故かファイル名に空 白が含まれていて気持悪いのでリネームすることにします.

$ mv Kochi\ Gothic.fdb KochiGothic.fdb

swf作成の基礎

とりあえず,まずはソースだけ(文字コードはUTF8で保存すること)

#!/usr/bin/perl
use SWF qw(:ALL);

$string = "サンプルスクリプト";

SWF::setScale(20.0);
SWF::setVersion(6);

my $m = new SWF::Movie();
$m->setBackground(0xff,0xcc,0x66);
$m->setDimension(200, 100);

my $f = new SWF::Font("KochiGothic.fdb");
my $t = new SWF::Text();
$t->setFont($f);
$t->setHeight(20);
$t->setColor(0x00,0x00,0x66);
$t->addUTF8String($string);
my $height = $t->getAscent();
my $width = $t->getUTF8StringWidth($string);
my $i = $m->add($t);
$i->moveTo(10, 60);

my $s = new SWF::Shape();
$s->setLine(2, 0, 0, 0);
$s->setRightFill(0xcc, 0xcc, 0xcc, 128);
$s->movePenTo(10, 60);
$s->drawLine(0, -$height);
$s->drawLine($width, 0);
$s->drawLine(0, $height);
$s->drawLine(-$width, 0);
$m->add($s);

$m->save("sample1.swf");

Ming0.3で日本語を使用するときは,$t->addString($text)でなく $t->addUTF8String($text) を使用することに注意してください. またテキストの幅を取得する際も$t->getUTF8StringWidth($text) を使用 してください.

サンプルスクリプト

自分で作成したスクリプトをサンプルとして掲載します.

リンク

Mingは元々PHP用に開発されているライブラリなので,Web上の情報源もサンプ ルソースがPHPで書かれていることが多いです.ただperlとPHPは比較的似てい るので,perlが読めるなら多くの場合簡単にPHPのソースも読めることでしょ う.

Up(P): Home

間違え,勘違い,スペルミスなどは mail まで

Last modified: Fri Feb 17 20:48:08 JST 2006