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

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/ にコピーされます。インストールされるディレクトリを変更するには、 MakefilePREFIX= の行 を編集して下さい。

インストール手順

例 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.sophp.ini ファイルに追加するか、 dl('php_ming.so'); を全ての Ming スクリプトの 先頭に追加して下さい。

実行用の設定

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

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

SWFBUTTON_HIT (integer)

SWFBUTTON_DOWN (integer)

SWFBUTTON_OVER (integer)

SWFBUTTON_UP (integer)

SWFBUTTON_MOUSEUPOUTSIDE (integer)

SWFBUTTON_DRAGOVER (integer)

SWFBUTTON_DRAGOUT (integer)

SWFBUTTON_MOUSEUP (integer)

SWFBUTTON_MOUSEDOWN (integer)

SWFBUTTON_MOUSEOUT (integer)

SWFBUTTON_MOUSEOVER (integer)

SWFFILL_RADIAL_GRADIENT (integer)

SWFFILL_LINEAR_GRADIENT (integer)

SWFFILL_TILED_BITMAP (integer)

SWFFILL_CLIPPED_BITMAP (integer)

SWFTEXTFIELD_HASLENGTH (integer)

SWFTEXTFIELD_NOEDIT (integer)

SWFTEXTFIELD_PASSWORD (integer)

SWFTEXTFIELD_MULTILINE (integer)

SWFTEXTFIELD_WORDWRAP (integer)

SWFTEXTFIELD_DRAWBOX (integer)

SWFTEXTFIELD_NOSELECT (integer)

SWFTEXTFIELD_HTML (integer)

SWFTEXTFIELD_ALIGN_LEFT (integer)

SWFTEXTFIELD_ALIGN_RIGHT (integer)

SWFTEXTFIELD_ALIGN_CENTER (integer)

SWFTEXTFIELD_ALIGN_JUSTIFY (integer)

SWFACTION_ONLOAD (integer)

SWFACTION_ENTERFRAME (integer)

SWFACTION_UNLOAD (integer)

SWFACTION_MOUSEMOVE (integer)

SWFACTION_MOUSEDOWN (integer)

SWFACTION_MOUSEUP (integer)

SWFACTION_KEYDOWN (integer)

SWFACTION_KEYUP (integer)

SWFACTION_DATA (integer)

定義済みのクラス

これらのクラスはこの拡張モジュールに含まれており、この拡張モジュールが PHPにコンパイルされているか、実行時に動的にロードされている場合のみ利 用可能です。

Ming は、PHP に13個の新規オブジェクトを追加します。これらは全て、メ ソッドと属性を有しています。これらを使用するには、オブジェクト について知る必要がありま す。

swfshape

swffill

swfgradient

swfbitmap

swftext

swftextfield

swffont

swfdisplayitem

swfmovie

swfbutton

swfaction

swfmorph

swfsprite

目次
ming_setcubicthreshold --  Set cubic threshold (?)
ming_setscale --  Set scale (?)
ming_useswfversion --  Use SWF version (?)
SWFAction -- 新規アクションを作成する
SWFBitmap->getHeight -- ビットマップの高さを返す
SWFBitmap->getWidth -- ビットマップの幅を返す
SWFBitmap -- ビットマップオブジェクトをロードする
swfbutton_keypress --  Returns the action flag for keyPress(char)
SWFbutton->addAction -- アクションを追加する
SWFbutton->addShape -- ボタンにシェープを追加する
SWFbutton->setAction -- Sets the action
SWFbutton->setdown -- Alias for addShape(shape, SWFBUTTON_DOWN)
SWFbutton->setHit -- addShape(shape, SWFBUTTON_HIT)へのエイリアス
SWFbutton->setOver -- addShape(shape, SWFBUTTON_OVER)へのエイリアス
SWFbutton->setUp -- addShape(shape, SWFBUTTON_UP)へのエイリアス
SWFbutton -- 新規ボタンを作成する
SWFDisplayItem->addColor --  このアイテムの色変換に指定した色を追加する
SWFDisplayItem->move -- オブジェクトを相対座標系で移動する
SWFDisplayItem->moveTo -- グローバル座標系でオブジェクトを移動する
SWFDisplayItem->multColor -- アイテムの色変換を乗算する
SWFDisplayItem->remove -- ムービーからオブジェクトを削除する
SWFDisplayItem->Rotate -- 相対座標系で回転する
SWFDisplayItem->rotateTo -- グローバル座標系でオブジェクトを回転する
SWFDisplayItem->scale -- 相対座標系でオブジェクトを拡大縮小する
SWFDisplayItem->scaleTo -- グローバル座標系でオブジェクトを拡大縮小する
SWFDisplayItem->setDepth -- z-orderを設定する
SWFDisplayItem->setName -- オブジェクトの名前を設定する
SWFDisplayItem->setRatio -- オブジェクト比を設定する
SWFDisplayItem->skewX -- X-skewに追加する
SWFDisplayItem->skewXTo -- X-skewを設定する
SWFDisplayItem->skewY -- Y-skewに追加する
SWFDisplayItem->skewYTo -- Y-skewを設定する
SWFDisplayItem -- 新規に displayitem オブジェクトを作成する
SWFFill->moveTo -- 塗りつぶしの原点を移動する
SWFFill->rotateTo -- 塗りつぶしの回転を設定する
SWFFill->scaleTo -- 塗りつぶしの倍率を設定する
SWFFill->skewXTo -- x-skewを設定する
SWFFill->skewYTo -- y-skewを設定する
SWFFill -- SWFFill オブジェクトをロードする
swffont->getwidth -- 文字列の幅を返す
SWFFont -- フォントの定義をロードする
SWFGradient->addEntry -- 傾きリストにエントリを追加する
SWFGradient -- 傾きオブジェクトを作成する
SWFMorph->getshape1 -- 最初のシェープへのハンドルを得る
SWFMorph->getshape2 -- 最後のシェープへのハンドルを得る
SWFMorph -- 新規にSWFMorphオブジェクトを作成する
SWFMovie->add -- ムービーにデータ型を追加する
SWFMovie->nextframe -- アニメーションの次フレームに移動
SWFMovie->output -- 作成したムービーを出力する
SWFMovie->remove --  表示リストからオブジェクトのインスタンスを削除する
SWFMovie->save -- ムービーをファイルに保存する
SWFMovie->setbackground -- 背景色を設定する
SWFMovie->setdimension -- ムービーの幅と高さを設定する
SWFMovie->setframes -- アニメーションの総フレーム数を設定する
SWFMovie->setrate -- アニメーションのフレームレートを設定する
SWFMovie->streammp3 -- MP3 ファイルへのストリーム
SWFMovie --  SWFバージョン4ムービー形式で新規ムービーオブジェクトを作成する
SWFShape->addFill -- 塗りつぶし色をシェープに追加する
SWFShape->drawCurve -- 曲線を画く (相対座標)
SWFShape->drawCurveTo -- 曲線を画く
SWFShape->drawLine -- 線を画く (相対座標)
SWFShape->drawLineTo -- 線を画く
SWFShape->movePen -- シェープのペンを(相対)移動する
SWFShape->movePenTo -- シェープのペンを移動する
SWFShape->setLeftFill -- 左ラスター色を設定する
SWFShape->setLine -- 輪郭の線種を設定する
SWFShape->setRightFill -- 右ラスター色を設定する
SWFShape -- 新規に輪郭オブジェクトを作成する
SWFSprite->add -- オブジェクトをスプライトに追加する
SWFSprite->nextframe -- アニメーションの次のフレームに移動する
SWFSprite->remove -- オブジェクトをスプライトから削除する
SWFSprite->setframes -- アニメーションの総フレーム数を設定する
SWFSprite -- ムービークリップ(スプライト)を作成する
SWFText->addString -- 文字列を画く
SWFText->getWidth -- 文字列の幅を計算する
SWFText->moveTo -- ペンを移動する
SWFText->setColor -- カレントのフォント色を設定する
SWFText->setFont -- カレントのフォントを設定する
SWFText->setHeight -- カレントのフォントの高さを設定する
SWFText->setSpacing -- カレントのフォントの間隔を設定する
SWFText -- 新規にSWFTextオブジェクトを作成する
SWFTextField->addstring -- 指定した文字列をテキストフィールドに結合する
SWFTextField->align -- テキストフィールドのアライメントを設定する
SWFTextField->setbounds -- テキストフィールドの幅と高さを設定する
SWFTextField->setcolor -- テキストフィールドの色を設定する
SWFTextField->setFont -- テキストフィールドフォントを設定する
SWFTextField->setHeight --  指定したテキストフィールドフォントの高さを設定する
SWFTextField->setindentation -- 先頭行のインデントを設定する
SWFTextField->setLeftMargin -- テキストフィールドの左マージン幅を設定する
SWFTextField->setLineSpacing -- テキストフィールドの行間を設定する
SWFTextField->setMargins -- テキストフィールドのマージン幅を設定する
SWFTextField->setname -- 変数名を設定する
SWFTextField->setrightMargin -- キストフィールドの右マージン幅を設定する
SWFTextField -- テキストフィールドのオブジェクトを作成する


add a note add a note User Contributed Notes
Flash 用 Ming 関数
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);

// mx actionscript
$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;
  }

// Set Font
 
$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();
?>

<mssql_select_dbming_setcubicthreshold>
 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