Ming Library dengan PHP (Part1)

ditulis oleh mahasiswa saya : Erwin (TI UKDW 03)

Dengan Ming Library kita dapat membuat file Flash hanya dengan menggunakan PHP script. Ming Library adalah pustaka karya Dave Hayden yang dapat menambah kemampuan PHP untuk menghasilkan file Flash (*.swf). Ming Library mendukung sebagian besar fitur yang terdapat pada Flash 4. Ming Library juga dapat digunakan pada bahasa pemrograman C++, Ruby, Phyton dan Perl.

Untuk dapat menggunakannya kita terlebih dahulu harus memastikan Ming Library terinstall sebagai ekstensi PHP. Petunjuk menginstall Ming dapat dilihat pada http://www.opaque.net/ming/install.html. Bagi pengguna Windows, agar lebih mudah dalam melakukan instalasi, dapat mendownload XAMPP di http://www.apachefriends.org/download.php?xampp-win32-1.6.6a-installer.exe

 

Membuat Movie Flash

Untuk membuat movie Flash membutuhkan kelas SWFMovie. Script yang digunakan adalah sebagai berikut:

$myMovie->new SWFMovie();

Variabel $myMovie merupakan obyek movie baru dan dapat diberi beberapa fundamental yang ada pada movie, seperti dimensi movie, frame rate, dan warna background. Untuk mengeset dimensi pada movie, menggunakan script berikut

$myMovie->setDimension(x,y);

Dengan demikian, ukuran atau dimensi movie Flash yang dibuat berukuran lebar x pixel dan tinggi x pixel. Mengeset frame rate dapat menggunakan fungsi setRate(), sebagai berikut:

$myMovie->setRate(30);

Angka 30 menunjukan banyaknya frame yang natinya ditampilkan tiap detik. Defaultnya adalah 12. Sedangkan untuk mengatur warna background adalah sebagai berikut:

$myMovie->setBackground(0,0,0);

Dengan demikian, warna background yang dihasilkan adalah putih yang merupakan komposisi dari nilai 0 untuk red, nilai 0 untuk green, dan nilai 0 untuk blue. Untuk menampilkan file Flash secara langsung ke dalam web browser menggunakan script sebagai berikut:

header( 'Content-type: application/x-shockwave-flash' );

$myMovie->output();

Sedangkan untuk menyimpan file Flash yang dihasilkan ke dalam diektori dengan format *.swf, menggunakan script sebagai berikut:

$myMovie->save(“namafile.swf”);

Beberapa script di atas jika digabungkan menjadi satu maka akan menghasilkan script PHP yang dapat menghasilkan movie Flash.

   1: <?php
   2: $myMovie = new SWFMovie();
   3: $myMovie->setDimension(400, 300);
   4: $myMovie->setRate(30);
   5: $myMovie->setBackground(0, 0, 0);
   6: // Tampilkan movie ke browser
   7: header(‘Content-type:application/x-shockwave-flash’);
   8: $myMovie->output();
   9: ?>
  10:  

Namun dengan cara ini file Flash tidak dapat ditampilkan secara spesifik sesuai dengan dimensi yang telah ditentukan. Hal ini terjadi karena file Flash berupa grafik vektor dan dapat secara dinamis memperbesar dimensinya sesuai dengan besarnya ukuran window Web browser. Cara untuk menampilkan file Flash ke browser agar sesuai dengan dimensi yang ditentukan adalah dengan cara menyimpan terlebih dahulu file Flash ke direktori dan kemudian di-embed-kan ke dalam tag HTML dengan cara sebagai berikut:

   1: <html> 
   2: <body>
   3: <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0" ID=objects WIDTH=460 HEIGHT=80> 
   4: <PARAM NAME=movie VALUE="example01.swf"> 
   5: <EMBED src="example01.swf" WIDTH=400 HEIGHT=300 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
   6: </OBJECT>
   7: </body> 
   8: </html>

Sehingga file Flash yang ditampilkan pada web browser akan tampak seperti pada gambar dibawah ini

clip_image002[4]

Menggambar Bentuk Obyek Dengan Ming

Untuk menggambar bentuk geometri pada Flash membutuhkan kelas SWFShape. Kelas ini dapat digunakan untuk menggambar garis maupun kurva.

$shape = new SWFShape();

Kelas SWFShape() mempunyai dua fungsi yang dapat digunakan untuk menggambar garis dan satu fungsi untuk mendefinisikan style dari garis. Untuk mengeset style dari garis dapat menggunakan fungsi setLine() yang mempunyai lima argument, yaitu pertama adalah lebar garis dalam pixel, tiga berikutnya adalah nilai RGB dan yang terakhir chanel alpha untuk garis. Berikut adalah bentuk penulisanya secara lengkap:

$shape->setLine(5, 255, 255, 0. 255);

Sedangkan dua fungsi untuk menggambar garis adalah drawLine() dan drawLineTo(). Setiap fungsi ini memiliki dua argument yaitu koordinat x dan koordinat y. drawLine() digunakan untuk menggambar garis dari titik koordinat (x,y) pen awal ditambahkan dengan x dan y pada argument sehingga dibentuk koordinat baru (x,y), sedangkan drawLineTo() digunakan untuk menggambar garis dari titik pen awal sampai ke koordinat (x,y) yang telah ditentukan.

Untuk menentukan koordinat posisi pen atau posisi awal pen dapat dengan menggunakan fungsi movePenTo() yang juga memiliki dua argument yaitu koordinat x dan koordinat y. Berikut ini adalah contoh script yang menggunakan kedua fungsi menggambar garis yaitu drawLine() dan drawLineTo():

   1: <?php
   2: $myMovie = new SWFMovie();
   3: $myMovie->setDimension(400, 300);
   4: $myMovie->setRate(30);
   5: $myMovie->setBackground(200, 200, 200);
   6: // Menggambar garis ke kanvas menggunakan drawLine()
   7: $line1 = new SWFShape();
   8: $line1->setLine(5, 0, 0, 0, 255);
   9: $line1->movePenTo(40, 20);
  10: $line1->drawLine(100, 100); 
  11: //sehingga garis digambar menuju koordinat (140,120)
  12: //diperoleh dari (100+40,100+20)
  13: // Menggambar garis ke kanvas menggunakan drawLineTo()
  14: $line2 = new SWFShape();
  15: $line2->setLine(5, 0, 0, 0, 255);
  16: $line2->movePenTo(80, 20);
  17: $line2->drawLineTo(200, 100);
  18: // Menambahkan shapes ke movie
  19: $myMovie->add($line1);
  20: $myMovie->add($line2);
  21: // Tampilan dari movie
  22: header('Content-type:application/x-shockwave-flash');
  23: $myMovie->output();
  24: ?>

Dari script di atas ini menghasilkan file Flash yang tampat pada web browser pada gambar

clip_image002[6]

Selain menggambar garis, Ming Library juga menyediakan dua fungsi untuk menggambar kurva yaitu drawCurve() dan drawCurveTo(). Fungsi drawCurve()digunakan untuk menggambar kurva secara relatif dari posisi awal pen. Fungsi ini memiliki empat argument, yang pertama adalah koordinat x dan y sebagai control point dari kurva, dan yang terakhir adalah koordinat x dan y yang merupakan anchor point. Ketika Ming menggambar kurva, posisi pen awal disebut sebagai source point. Sedangkan fungsi drawCurveTo() digunakan untuk menggambar kurva dimulai dari posisi awal pen dan menggambarnya menuju anchor point, dengan menggunakan control point untuk mendefinisikan bentuk dari kurva. Fungsi ini juga memiliki empat argument sama seperti pada drawCurve().

clip_image002

Berikut ini adalah contoh script penggunaan dari fungsi drawCurveTo() untuk menggambar kurva menggunakan Ming:

   1: <?php
   2: $myMovie = new SWFMovie();
   3: $myMovie->setDimension(400, 300);
   4: $myMovie->setRate(30);
   5: $myMovie->setBackground(200, 200, 200);
   6: // Menggambar kurva
   7: $curve = new SWFShape();
   8: $curve ->setLine(5, 0, 0, 0, 255);
   9: $curve ->movePenTo(40, 20);
  10: $curve ->drawCurveTo(100, 100, 100, 20);
  11: // Menambahkan shape ke movie
  12: $myMovie->add($curve);
  13: // Menampilkan movie
  14: header(‘Content-type:application/x-shockwave-flash’);
  15: $myMovie->output();
  16: ?>

Dari script di atas ini menghasilkan file Flash yang tampat pada web browser pada gambar

clip_image002[8]

Penggabungan beberapa kurva dapat digunakan untuk menggambar sebuah lingkaran. Pembuat Ming yaitu Dave telah membuat sebuah metode perhitungan untuk menggambar lingkaran dengan Ming. Berikut adalah metode yang disediakan oleh Dave untuk menggambar lingkaran dengan Ming:

   1: // draws a circle with radius $r 
   2: // centered at ($x,$y) into shape $s 
   3: $a = $r * 0.414213562; 
   4: // = tan(22.5 deg) 
   5: $b = $r * 0.707106781; 
   6: // = sqrt(2)/2 = sin(45 deg) 
   7: $s->movePenTo($x+$r, $y); 
   8: $s->drawCurveTo($x+$r, $y-$a, $x+$b, $y-$b); 
   9: $s->drawCurveTo($x+$a, $y-$r, $x, $y-$r); 
  10: $s->drawCurveTo($x-$a, $y-$r, $x-$b, $y-$b); 
  11: $s->drawCurveTo($x-$r, $y-$a, $x-$r, $y); 
  12: $s->drawCurveTo($x-$r, $y+$a, $x-$b, $y+$b); 
  13: $s->drawCurveTo($x-$a, $y+$r, $x, $y+$r); 
  14: $s->drawCurveTo($x+$a, $y+$r, $x+$b, $y+$b); 
  15: $s->drawCurveTo($x+$r, $y+$a, $x+$r, $y); 

Dengan menggabungkan metode tersebut pada kelas SWFShape(), maka dapat dibentuk suatu lingkaran yang sempurna. Berikut adalah contoh script yang digunakan untuk menggambar lingkaran dengan Ming:

 

   1: <?php  
   2: hape=new SWFShape();  
   3: hape->setLine(1,0,0,0);  
   4: hape->setRightFill(255,0,255);  
   5: = 100;  
   6:  40;  
   7:  40;  
   8:  $ra * 0.414213562; // = tan(22.5 deg) 
   9:  $ra * 0.707106781; // = sqrt(2)/2 = sin(45 deg) 
  10: hape->movePenTo($x+$ra, $y);  
  11: hape->drawCurveTo($x+$ra, $y-$a, $x+$b, $y-$b);  
  12: hape->drawCurveTo($x+$a, $y-$ra, $x, $y-$ra);  
  13: hape->drawCurveTo($x-$a, $y-$ra, $x-$b, $y-$b);  
  14: hape->drawCurveTo($x-$ra, $y-$a, $x-$ra, $y);  
  15: hape->drawCurveTo($x-$ra, $y+$a, $x-$b, $y+$b);  
  16: hape->drawCurveTo($x-$a, $y+$ra, $x, $y+$ra);  
  17: hape->drawCurveTo($x+$a, $y+$ra, $x+$b, $y+$b);  
  18: hape->drawCurveTo($x+$ra, $y+$a, $x+$ra, $y);  
  19: ovie=new SWFMovie();  
  20: ovie->setDimension(400,300);  
  21: ovie->setBackground(255,0,0);  
  22: //Menambahkan shape ke movie
  23: stCircle=$myMovie->add($myShape);  
  24: stCircle->moveTo(100,100);  
  25: enampilkan movie
  26: er(‘Content-type:application/x-shockwave-flash’);
  27: ovie->output();
  28:  

clip_image002[10]

3 thoughts on “Ming Library dengan PHP (Part1)

  1. Bisa koq asalkan di server terinstall Ming Library buat ekstensi di PHP. Kemudian hasil perhitungan dari aplikasi sudah dibuat itu tinggal dibuat kurvanya menggunakan Ming.

    Cuma masalahnya karena Ming masih product experiment jd biasanya di server belum menyediakan Ming Library. Alternatif lain bisa menggunakan GD Library yang dapat menghasilkan kurva berbasis image bukan Flash, biasanya beberapa server sudah support GD Library secara langsung.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s