|
|
LXVI. Flash 用 Ming 関数警告 | このモジュールは、
実験的なものです。これは、これらの関数の動作、関
数名は、このドキュメントに書かれて事項と同様に告知なく将来的なPHPのリ
リースで変更される可能性があります。注意を喚起するとともに、このモジュー
ルは使用者のリスクで使用して下さい。 |
Mingは省略語ではありません。Ming は、SWF("Flash")フォーマットのムー
ビーを作成するためのオープンソース(LGPL)のライブラリです。Ming は、
シェープ、グラディエント、ビットマップ(PNGおよびJPEG)、モーフィン
グ、テキスト、ボタン、アクション、スプライト("ムービークリップ")、
mp3 のストリーム出力、色変換といったFlash 4の機能のほとんど全てを
サポートしています。現在、未サポートなのは、サウンド関係のイベン
トのみです。
長さ、距離、大きさ等を指定する値は全て "twips" つまり、20ユニット
/ピクセル単位であることに注意して下さい。しかし、実際には、Flash
プレイヤーがムービーをembed/object タグで指定したピクセルサイズま
たはembedされていない場合はフレーム全体にスケーリングするため、任
意のサイズになります。
Ming は、既存のPHP/libswf moduleモ
ジュールに対して多くの点で優れています。Ming は、そのコードをコン
パイルできる環境でならどこでも使用することが可能です。一方、
libswf のソースコードは公開されておらず、ごくわずかなプラットフォー
ムでのみ利用可能です。Windowsは、libswfでサポートされるプラット
フォームには入っていません。Ming は、ムービーの要素をPHPオブジェ
クト内に隠蔽することにより、SWFファイルフォーマットの細部を直接取
り扱うことを回避しています。また、Ming はメンテナンスが継続されて
います。使用したい機能がある場合には、我々、
まで知らせ
て下さい。
Ming は、PHP 4.0.5 で追加されました。
Ming を PHP で使用するには、まず、Ming ライブラリを構築し、インス
トールする必要があります。ソースコードとインストール手引が、Ming
のホームページ から入
手可能です。ここには、例や簡単なチュートリアル、最新のニュースも
あります。
ming のアーカイブをダウンロードし、展開して下さい。Ming ディレク
トリに移動し、make、make install を実行して下さい。
これにより、libming.so が構築され、
/usr/lib/ にインストールされます。また、
ming.h が /usr/include/
にコピーされます。インストールされるディレクトリを変更するには、
Makefile の PREFIX= の行
を編集して下さい。
例 1. PHPに組み込む(UNIX)
mkdir <phpdir>/ext/ming
cp php_ext/* <phpdir>/ext/ming
cd <phpdir>
./buildconf
./configure --with-ming <other config options>
|
PHP を通常と同様に構築、インストールして下さい。必要ならば Web
サーバを再起動して下さい。
ここで、extension=php_ming.so を
php.ini ファイルに追加するか、
dl('php_ming.so'); を全ての Ming スクリプトの
先頭に追加して下さい。
この拡張モジュールは設定ディレクティブを全く定義しません。
これらの定数は、この拡張モジュールで定義されており、
この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー
ドされるかのどちらかの場合のみ使用可能です。
これらのクラスはこの拡張モジュールに含まれており、この拡張モジュールが
PHPにコンパイルされているか、実行時に動的にロードされている場合のみ利
用可能です。
Ming は、PHP に13個の新規オブジェクトを追加します。これらは全て、メ
ソッドと属性を有しています。これらを使用するには、オブジェクト について知る必要がありま
す。
- swfshape
- swffill
- swfgradient
- swfbitmap
- swftext
- swftextfield
- swffont
- swfdisplayitem
- swfmovie
- swfbutton
- swfaction
- swfmorph
- swfsprite
Habib Valanejad
14-Jul-2004 04:15
I had some problems compiling ming03a on Solaris using both gcc and/or Sun compiler. One problem was in php_ext/ming.c file. SWFMovie_setSoundStream() expects 2 args in
../ming.h file, but in ming.c we're passing 3 args to the function:
ming.c:
SWFMovie_setSoundStream(movie, sound, skip);
ming.h:
void SWFMovie_setSoundStream(SWFMovie movie, SWFSoundStream sound);
I had to remove the last argument (skip) in ming.c and do the compilation again.
wokan at cox dot net
02-Jun-2004 01:07
For those who don't get the naming, _Ming_ the Merciless was comic book hero _Flash_ Gordon's arch enemy.
jg at donotspam dot jmkg dot net
22-Dec-2003 03:14
As of July 10th 2003 the output method of SWFMovie now requires an integer 0 ... 9 parameter to select the compression intensity that should be used. This does not appear to be documented right now - a look in your webserver's error log will reveal a 'wrong paramter count' for this method - this is the reason why. SWFMovie->output(3) works okay - I presume 0 ... 9 mirrors gzip compression levels but I don't know...
Anze
03-Nov-2003 10:53
DisplayItem has another method, not included in this documentation - addAction(). Use it like this:
$di=$m->add($mySprite); // add movie clip to main movie
$di->addAction(new SWFAction("do_something();"),SWFACTION_ONLOAD);
Enjoy!
gaz_b3 at yahoo dot com
04-Apr-2003 01:11
The current CVS version, Ming 0.3a, supports
a lot of MX ActionScript including the MX Drawing API.
This is very nice for easy command line compiling of
MX ActionScript only movies.
For example:
<?
ming_setScale(20.00000000);
ming_useswfversion(6);
$movie = new SWFMovie();
$movie->setDimension(550,400);
$movie->setBackground(0xcc, 0xcc, 0xcc );
$movie->setRate(31);
$strAction = "
_root.createEmptyMovieClip ( 'triangle', 1 );
with ( _root.triangle ) {
lineStyle( 5, 0xff00ff, 100 );
moveTo( 200, 200 );
lineTo( 300,300 );
lineTo( 100, 300 );
lineTo( 200, 200 );
}
";
$movie->add(new SWFAction( str_replace("\r", "", $strAction) ));
$movie->save("trianglemx.swf");
?>
Lots of examples here:
attila at linuks dot NOSPAM dot net
26-Dec-2001 05:42
You can get several .fdb font files from
kunnoichi at hotmail dot com
20-Aug-2001 07:50
//In quicktime, movies may be exported as jpeg or png
//This object will convert any movie that has been saved as a group of images into
//an swf file. The frame rate and other attributes can be controlled
$path = "my_movie_dir"; //relative path to the jpg/png or bmp files
$frame_rate=30; //frame rate of the flash movie
$quality=50; //image quality during conversion (only valid if not jpeg)
$skip_rate=5; //how many frames to skip
set_time_limit("600"); //this could take some time
$converter=new images_to_swf($path,$frame_rate,$skip_rate);
//$converter->convert_images(70); //Use this if using non jpeg files or decreasing the quality
$converter->make_movie();//Make the movie
//Do two things with it
$converter->save_movie("my_movie_dir/my_movie.swf");
$converter->output_movie();
class images_to_swf {
var $path; //path to the image files
var $skip_rate;
var $movie;
var $images=array();
function images_to_swf($path,$frame_rate=30,$skip_rate=5) {
$this->path=$path;
$this->skip_rate=$skip_rate;
$this->movie=new swfmovie ();
$this->movie->setrate ($frame_rate);
}
function convert_images($quality=80,$delete_old_files=1) {
$main = opendir($this->path);
rewinddir($main);
//first convert to jpeg (if we have to)
//also change the quality
while($filename = readdir($main)) {
//only use valid file types
if (ereg("(png|bmp|jpg|jpeg)\$",$filename)) {
$file_path=$this->path."/".$filename;
if (ereg("png\$",$filename)) $temp_img=imagecreatefrompng ($file_path);
else if (ereg("bmp\$",$filename)) $temp_img=imagecreatefrompng ($file_path);
else if (ereg("(jpg|jpeg)\$",$filename)) $temp_img=imagecreatefromjpeg ($file_path);
if (ereg("(png|bmp)\$",$filename)) {
if ($delete_old_files) unlink($file_path);
$new_file_path=$file_path.".jpg";
}
else $new_file_path=$file_path;
ImageJPEG($temp_img,$new_file_path,$quality);
//echo "Converted $filename to $new_file_path at quality $quality<br />";
}
}
}
function make_movie() {
$main = opendir($this->path);
rewinddir($main);
//Get all valid jpegs
while($filename = readdir($main)) {
if (ereg("(jpg|jpeg)\$",$filename)) {
$file_path=$this->path."/".$filename;
$valid_paths[]=$file_path;
}
}
//Put jpegs in order
sort($valid_paths);
//then create the movie
for ($a=0; $a<count($valid_paths); $a=$a+$this->skip_rate) {
$fp = fopen($valid_paths[$a],"rb");
$this->images[$a] = fread($fp,999999);
fclose($fp);
$this->movie->add(new swfbitmap($this->images[$a]));
$this->movie->nextframe();
//echo "Added ".$valid_paths[$a]." to the movie<br />\n";
}
}
function save_movie($file_name) {
$this->movie->save($file_name);
}
function output_movie() {
header('Content-type: application/x-shockwave-flash');
$this->movie->output();
}
}
ivv_rousse at yahoo dot com
04-Aug-2001 01:17
// Simple button with link
<?php
Ming_setScale(1.0);
function makeRect($r, $g, $b){
$s = new SWFShape();
$s->setRightFill($s->addFill($r, $g, $b));
$s->movePenTo(-100,-20);
$s->drawLineTo(100,-20);
$s->drawLineTo(100,20);
$s->drawLineTo(-100,20);
$s->drawLineTo(-100,-20);
return $s;
}
$font = new SWFFont("test.fdb");
$text1 = new SWFText();
$text1->setFont($font);
$text1->moveTo(155, 410);
$text1->setColor(0x00, 0x00, 0x00);
$text1->setHeight(28);
$text1->addString("php.net");
$b1 = new SWFButton();
$b1->setUp(makeRect(0xff, 0, 0));
$b1->setOver(makeRect(0xcc, 0, 0));
$b1->setDown(makeRect(0, 0, 0xaa));
$b1->setHit(makeRect(0, 0, 0));
$b1->addAction(new SWFAction("getURL(' 'phpsite');"),
SWFBUTTON_MOUSEUP);
$m = new SWFMovie();
$m->setDimension(1000,1000);
$m->setBackground(0xcc, 0xcc, 0xcc);
$i = $m->add($b1);
$m->add($text1);
$i->setName("phpsite");
$i->moveTo(200,400);
header("Content-type: application/x-shockwave-flash");
$m->output();
?>
| |