23.4.08

Memulai dengan FlashDevelop - #3 (haXe)

haXe adalah bahasa pemrograman baru yang tujuan dibuatnya adalah untuk mengakomodir segala kebutuhan web dengan 1 bahasa. Bagi yang memiliki ketertarikan terhadap pengembangan aplikasi di web, kita tentu tau kalo web terbentuk oleh banyak platform dan teknologi baik itu server maupun klien. Untuk server, ada beberapa yang terkenal seperti PHP, Perl, Phyton, Ruby on Rails, JSP, ASP, ColdFusion, dll. Dan untuk klien pun ada beberapa seperti JavaScript, Flash, Shockwave, Applet, SilverLight, etc. Banyak ya, udah gitu beda-beda lagi. Tapi dengan haXe, kebutuhan akan teknologi server dan klien ada pada 1 bahasa. Mantap :).

Out of the box, haXe bisa target ke 3 platform: Neko (untuk server), JavaScript, dan Flash (dari versi 6 hingga 9). Versi Flash dari 6 hingga 8 menggunakan API AS2, dan selebihnya menggunakan API AS3. Memang ada beberapa hal yang beda jauh dari ActionScript namun tentu saja tidak dapat dijelaskan semuanya dalam satu saat. Tapi jangan khawatir, seiring berjalannya waktu dan apabila diberi kesempatan, akan kusempatkan untuk menjelaskan semuanya :).

Instalasi

Unduh haXe terbaru (pada saat artikel ini ditulis sudah versi 1.19) dan gunakan yang zip. Ekstrak pada direktori mana saja yang dikehendaki. haXe membutuhkan NekoVM, sehingga unduh itu juga dan ekstrak pada direktori mana saja yang dikehendaki (pada saat ini versi 1.7.0).

UPDATE: Agar haXe dan neko dapat dikenali instalasinya oleh windows, lakukan langkah berikut:

  1. Klik kanan pada My Computer dan buka Properties.
  2. Buka tab Advanced dan klik pada Environment Variables
  3. Pada bagian System variables tekan New dan isikan:
    Variable Name: HAXEPATH, Variable value: direktori tempat haXe diekstrak (misal C:\haXe\). Tekan OK.
  4. Tekan New sekali lagi, dan isikan:
    Variable Name: NEKOPATH, Variable value: direktori tempat neko diekstrak (misal C:\neko\). Tekan OK.
  5. Pada daftar System Variables, cari nama variabel Path, dan tekan Edit. Pada Variable Value, tambahkan pada akhir kalimat dengan: %HAXEPATH%;%NEKOPATH%; dan tekan OK.
  6. Tekan OK dua kali sampai window System Properties tertutup (tapi jangan pake tanda silang di kanan atas atau diclose).
  7. Untuk cek apakah haXe sudah terinstal dengan baik, buka Command Prompt dan ketik haXe lalu tekan Enter, apabila tampil daftar panjang dengan penjelasan penggunaan haXe maka instalasi sudah benar

Konfigurasi

Nyalakan FD, kemudian buka Tools > Program Settings.... Pilih HaXeContext pada daftar Plugins. Cari HaXe Path pada bagian haXe dan isi dengan direktori tempat haXe berada. Tekan Enter dan klik Close. Sudah, hanya itu! :)

Tes koding

Karena haXe bisa menghasilkan flash setara AS2 dan AS3, maka kita akan coba tuliskan 2 versi "HaloDunia" menggunakan haXe. Ini agar lebih mudah memahami karakteristik haXe, dan perbedaannya dengan ActionScript. Gak sulit kok, tenang saja :)

Pertama, buka Project > New Project

Pilihlah seting HaXe > Empty Project, dan berikan nama proyek kita "HaloDuniaHX". Tempatkan pula ke direktori yang dikehendaki. Klik OK.

Lalu kita lakukan konfigurasi dengan membuka Project > Properties.... Pada tab Platform, gunakan Flash Player 8, dan pada Output, isikan Output file dengan nama file swf, misalnya "haloduniahx.swf". Isikan pula dimensinya sesuai yang dikehendaki, misalnya saja 300 x 300. Tekan OK.

Klik kanan pada nama proyek di panel Project dan kemudian pilih Add > New Class.... Isi nama kelas sebagai "Test.hx", dan tekan OK. Berbeda dengan ActionScript, kita tidak perlu menggunakan Always Compile.

Kita tulis kelas "Test.hx" kita, seperti ini:

package ; import flash.Lib; import flash.TextField; import flash.TextFormat; class Test { public function new() { var tf:TextFormat = new TextFormat("Arial", 14); var tt:TextField = Lib.current.createTextField("tt", Lib.current.getNextHighestDepth(), 0, 0, 300, 20); tt.text = "Halo Dunia F8"; tt.setTextFormat(tf); } public static function main():Void { var t:Test = new Test(); } }

Perhatikan perbedaannya dengan yang versi AS2. Beberapa perbedaannya adalah:

  • haXe menggunakan package untuk fungsi yang sama dengan package AS3, namun penulisannya tidak membungkus kelas (seperti pada AS3). Cukup ditulis di baris paling atas sebelum import.
  • haXe menggunakan flash.Lib.current untuk _root

Sebelum kita compile, kita buka dulu Project Properties... dan pada tab Compiler Options, liat bagian Main Class dan isikan dengan nama kelas kita yaitu "Test". Sekarang kita compile, tekan F5 atau pada Project > Test Movie.... Berhasil kan?

Ok, kalau tadi masih ingat, haXe bisa output ke beberapa versi Flash, sekarang kita coba buat untuk flash9, namun tanpa membuat kelas baru. Bisakah? Tentu bisa, karena haXe menyediakan yang namanya conditional compilation. Conditional compilation tertulis di dalam kode dan diawali dengan pagar (#).

Kita modifikasi kelas "Test.hx" kita menjadi seperti ini:

package ; import flash.Lib; #if flash8 import flash.TextField; import flash.TextFormat; #else flash9 import flash.text.TextFormat; import flash.text.TextField; #end class Test { public function new() { #if flash8 var tf:TextFormat = new TextFormat("Arial", 14); var tt:TextField = Lib.current.createTextField("tt", Lib.current.getNextHighestDepth(), 0, 0, 300, 20); tt.text = "Halo Dunia F8"; tt.setTextFormat(tf); #else flash9 var tf:TextFormat = new TextFormat("Arial", 14); var tt:TextField = new TextField(); tt.text = "Halo Dunia F9"; tt.setTextFormat(tf); Lib.current.addChild(tt); #end } public static function main():Void { var t:Test = new Test(); } }

Jelas kan? Apabila kita targetkan untuk flash8, maka yang berada di dalam blok conditional compilation flash8 akan dibaca, selebihnya tidak. Begitu juga sebaliknya untuk flash9. Hal ini tentu saja juga dapat diimplementasikan pada platform-platform lain seperti neko dan javascript

Selain itu, coba perhatikan perbedaannya dengan AS3. Beberapa perbedaannya adalah:

  • Kelas di haXe untuk flash9 tidak perlu menjadi sub-kelas dari Sprite atau MovieClip.
  • Karena itu, menampilkan TextField mirip cara flash8 dan Lib.current-nya, namun flash.Lib.current kali ini merupakan Document class (atau kelas utama, karena AS3 tidak mengenal _root) yang merupakan sub-kelas dari MovieClip sehingga menggunakan metode yang sesuai.

Untuk mencobanya, buka Project > Properties... dan ubahlah Target pada Platform menjadi Flash Player 9.

Compile ulang, dan lihat :). Menarik kan?

Tidak ada komentar: