Mar 30

Dari 3 (tiga) 3D Engines Actionscript3.0 yang populer saat ini (PV3D, Away3D, Sandy3D), masing-masing punya kelebihan dan kekurangan masing-masing.

Tapi dari semua API yang mereka tawarkan, seperti API tool lainnya yang ku anggap point penting pertama kali adalah API yang mengurus event.

Papervision3D (sorry ya..) kuanggap terlambat untuk urusan Event ini. Sampai versi Beta RC1 saat ini, event yang ada cuma FileEvent, hari geneee.. cuman ngurusin dispatch loader saja?

Away3D dan Sandy3D sudah agak mendingan.

Event di Away 3D (versi 1.9.4) :

FaceEvent
MeshElementEvent
SegmentEvent
MouseEvent3D
Object3DEvent
LazyEventDispatcher

Event di Sandy3D (3.0.2) :

BubbleEvent, BubbleEventBroadcaster, EventBroadcaster
QueueEvent
SandyEvent
Shape3DEvent

Saat ini MouseVent3D dari Away3D yang suitable dalam project yang membutuhkan informasi koordinat x,y,z dari mouse-trigger di scene 3D swf kita.

Agak repot bila pakai Sandy3D atau PV3D. Papervision3D malah cuma menawarkan MouseEvent bawaan class Sprite di Object3Dnya, alhasil cuma koordinat 2D yang didapat, apalagi bila dirender dalam 1 container maka localX dan localY yang di-dispatch jadi statis belaka, capee deh!!

Mar 6

Beberapa decompiler untuk swf 9 / actionscript 3.0 sudah mulai bertebaran :

- Imperator Fla 4.0
- SoThink SWF Decompiler 4.0
- ASV 6.0

Tidak ada tempat yang benar-benar aman untuk coding..

Jul 30

Minggu kemarin pulang dari pelosok,
Setelah 20 km naik motor melewati jalan berpasir dan agak rusak.
Akhirnya sampai di jembatan pertama, berhenti sebentar di desa (Lampuyang) itu untuk mencari makan.
Baru turun dari motor, ternyata baru sadar kalo jalan didepan sudah dipenuhi banjir setinggi lutut.
Mestinya selama 20 km berikutnya aku pasti akan terjebak banjir.

Di hari-hari normal pun untuk melewati jalan Desa Lampuyang - Seranggas akan penuh perjuangan, karena rusak berat dan dipenuhi oleh kubangan disana-sini. Dan batang kayu banyak melintang disetiap badan jalan yang tertutup lumpur!
Apalagi sekarang banjir setinggi itu? Kasian motor dinasku! Kalo badan sih gak perlu dikasiani!

Akhirnya gak jadi makan, mending uangnya untuk ongkos nyewa perahu.
Ongkosnya, untuk 1 orang dengan 1 motor ditawarin oleh bapak yang punya perahu Rp. 40.000,-
Sebenarnya bisa ditawar sih. Tapi aku malas saja untuk nawar.
Apalagi bapaknya tahu kalo aku dokter yang tugas dikecamatan ini.

Kemudian selama perjalanan 15 km berikutnya, aku dan motorku numpang perahu, kemudian berhenti di desa Kuin.
Aku kira sudah terbebas banjir. Gak taunya masih ada, setinggi lutut lagi!! Terpaksalah dengan bersusah payah selama 1 jam, akhirnya bisa lega.
Selanjutnya 55 km sisanya bisa menikmati kembali perjalanan pulang yang dihiasi pemandangan kebun kelapa tiada henti-hentinya, diselingi hutan karet.

Katanya spesifikasi file SWF versi 9 sudah mulai di release ya?
(Taunya pas baca blognya Emmy Huang, kemarin).
Aku belum menyimak secara jelas, tapi kalo arsitektur SWF 9 termasuk spesifikasi file abc (actionscript byte code ) sudah diketahui secara jelas oleh publik, jadi akan tinggal menunggu waktu paling lama setengah tahun untuk mendapatkan decompiler file swf ya?

Siapa yang paling beruntung dengan di-release-nya spesifikasi swf-9 ini?

Yang pertama; Vendor-vendor lain yang selama ini mempunyai tool untuk meng-export animasi dan multimedia ke file SWF 8 dan sebelumnya, untuk di upgrade ke SWF 9.

Yang kedua; Para pembuat SWF alternative untuk aplikasi seperti Nicolas Cannase (HaXe), dan OpenLaszlo.

Yang ketiga; Para pembuat decompiler, deassembler, obfuscator flash dari yang proprietary sampai free, seperti Sothink, ASVGuy (Burak. K) dan Igor Kogan (Flasm dan Flare).

Selain itu para developer dan pemerhati flash awam seperti kita perlu mengetahui spesifikasi SWF 9 untuk sekedar menambah wawasan.

Jul 21

Sudah agak mendingan sekarang, bisa ketemu koneksi lagi..
Bulan ini agak susah bikin posting baru karena atasan ngotot untuk meresmikan puskesmas baru secepatnya.
BTW puskesmas yang dimaksud berada 90 km selatan kota ku, dipinggir pantai dengan geograpik yang sangat indah.
Jarang jarang kan menemukan kondisi dimana ada tanah pantai selebar 100 meter kemudian tegak lurus sepanjang 2 kilometer, dan kiri kanan-nya pantai!! Yang kanan pantai pasir putih dengan ombak agak gede langsung berbatasan dengan laut jawa, sedangkan yang kiri pantai ditumbuhi rumput hijau halus dengan bunga warna-warni dengan ombak tenang, berbatasan dengan teluk air payau. Tengah-tengahnya penuh dengan pohon cemara. Kedua pantai beda habitat itu membentuk garis sejajar selebar 100 meter , sepanjang 2 kilometer!!
It’s beautiful beach, we call it Ujung Pandaran..
Karena aku satu-satunya dokter disini yang mau ditugaskan ke tempat eksotik itu, (tuntutan profesi). Berat sih!!
Tidak ada MXNA disitu, tidak ada Nicolas Cannasse, penduduk tidak ada yang nyambung di ajak ngomong tentang J2ME apalagi diskusi tentang RecordStore.
Yang paling krusial mungkin ngusahain koneksi internet disana, juga GPS devices! Sama Cessna 182 Skylane R/C Engine untuk sekedar park flyer sore-sore dipinggir pantai… :) kalo bisa sih!!, terserah kalo harus sampai menyisihkan sebagian dana operasional ,hahahaha! Apa kata BPK nanti!!
Tapi itu sepadan lah kalo dokter miring kaya aku harus berada dalam kondisi yang ‘paradoxal’ begitu!
I miss my free time for coding..

Jun 26

Pada penerapan OOP di Actionscript 3.0, konsep inheritance mempunyai dua kelemahan utama :

  • Kita tidak bisa mengubah ciri bawaan dari suatu object class sewaktu runtime. Contohnya sebuah class DesimalKorektor. Kita tidak akan bisa mengubah sebuah DesimalKorektor menjadi DesimalKorektorDuaDigit sewaktu runtime bila kita memakai konsep inherintace secara klasik.
  • Semakin kita banyak menggunakan permutasi, akan semakin susah memakai beberapa class di package kita. Lebih jelasnya begini ; jika anda ingin meng-extend-kan sebuah class DesimalKorektor supaya lebih scalable, anda mungkin akan membuat subclass ScalableDesimalKorektor dari DesimalKorektor. Untuk membuat DesimalKorektor yang bisa di-undo, anda mungkin akan membuat subclass UndoableDesimalKorektor. Tetapi, bagaimana caranya bila kita ingin mengkombinasikan fitur-fitur dari beberapa subclass tadi menjadi satu subclass (sewaktu runtime)? Dengan inheritance anda harus mendeklarasikan subclass tadi untuk menambahkan fitur baru. Setiap fitur baru akan meningkatkan jumlah class yang diperlukan, sehingga akan diperlukan usaha lebih dalam management-nya.

Pada beberapa “aliran” developer, ada yang melakukan beberapa metode untuk menanggulangi kelemahan dari inheritance ini. Diantaranya dengan menggunakan “Decorator Pattern”. Untuk menambahkan fitur baru pada suatu subclass, Decorator Pattern lebih menerapkan konsep komposisi dibandingkan pewarisan dari inheritance. Sehingga akan menjadi mungkin untuk menambahkan ciri baru dan mengubah perilaku (behavior) dari class tersebut sewaktu runtime.
Prinsip utama dari Decorator Pattern adalah setiap object decorator dengan type tertentu dapat menambahkan atau merubah behavior dari object yang di “decor”. Sang class Decorator dan class yang di “décor” harus meng-implement interface yang sama.

Decorator Pattern terdiri dari :

  • Decorator / decorated (interface)
  • Concrete decorated (class)
  • Absctract decorator (class)
  • Concrete decorator (class-class)

Di posting berikutnya akan kita bahas masing-masing elemen diatas.

Jun 16

Biasanya, frame rate benar-benar merepotkan bila di Flex. Ada banyak alasan untuk berpendapat seperti itu. Terutama bila dalam membuat sebuah SWF yang mempunyai banyak frame. Flash sudah tentu lebih baik dalam menghasilkan SWF yang tahu bagaimana cara menangani preload dari timeline dengan frame yang banyak, demikian juga dalam menangani playback-nya. Karena Flash lebih baik dalam membuat SWF yang mempunyai content berupa animasi.

Sebaliknya urusan animasi di Flex tidak akan semudah itu, pertama dalam proses pembuatannya tidak dikenal konsep timeline, kemudian dalam playback-nya, akan di-eksekusi “lebih lambat”.
Karena, kita terdogma menerapkan sebuah “state” aplikasi/animasi di Flash berdasarkan frame (frame state navigation) dengan gotoAndStop() atau gotoAndPlay(), atau dengan mengatur visible/ alpha transparansi dari MovieClip.

Tidak demikian dengan Flex, karena Flex mengatur “state” dengan menggunakan DisplayList (Flash Player 9 DisplayList).
DisplayList memungkinkan anda mempunyai sebuah Sprite/MovieClip yang exist, tapi belum di-render di stage. Jadi bila pada animasi yang mempunyai banyak frame di timeline-nya, maka SWF hasil dari Flash akan melakukan preload asset-asset yang akan dimainkan terlebih dahulu. Sedangkan SWF hasil dari Flex tidak menerapkan proses preload seperti itu, sehingga animasi akan dijalankan lebih lambat.

Urusan “state” dalam SWF penting dalam interaksi dengan user, baik untuk navigasi maupun “application state” dan animasi. Di Flash kita terbiasa mengatur sebuah MovieClip dengan visible property ke false, yang artinya MovieClip sudah berada ditempatnya di stage, hanya saja belum terlihat, dan kemudian membuat visible menjadi true pada saat yang diperlukan. Sedangkan pada Flex terdapat mekanisme yang lebih mendasar dalam mengatur state. Pada banyak UI Component di framework Flex mengatur “state” dengan “add” dan “remove children” dari DisplayList. Umumnya sesaat setelah asset di jalankan (di-animasi-kan) akan langsung di “removed” dari DisplayList, dan akan menjadi prioritas utama oleh Garbage Collector untuk disingkirkan dari RAM. Sehingga ketika animasi dijalankan lagi, akan lebih lambat karena asset tadi akan harus di-load lagi ke memory.

Sedangkan di Flash, proses tadi berlangsung simple, karena secara “alami” kita selalu membuat frame awal sebagai preload, untuk memberitahukan Flash Player me-load semua asset – asset animasi sebelum playback. Dan proses “removing asset” yang sudah dimainkan dari RAM oleh Garbage Collector (Flash Player 8) biasanya akan dilakukan secara berkala setiap 60 detik atau ketika penggunaan RAM meningkat 20% atau lebih.

Yang perlu dipertimbangkan lagi adalah sewaktu embedding sound dan image di Flex. Karena di Flex tidak dikenal konsep Library, sehingga anda perlu menggunakan tag embed di code Flex anda untuk meng-asosiasi-kan image dan suara external ke sebuah variable, dan menggunakan variable itu untuk “link” ke asset. Asset-asset external ini di embed ke SWF sehingga anda tidak perlu khawatir tentang preloading misalnya dengan loadMovie atau Sound.loadSound.
Flex membungkus asset ini dengan class-class khusus yang dinamakan Class “Asset”, hampir mirip dengan kondisi ketika anda meng-import sound ke Flash Library dan meng-export-nya dengan linkage.
Bila kita meng-embed sebuah symbol MovieClip dari SWF eksternal, maka Flex akan membungkusnya sebagai class mx.core.MovieClipAsset, dan ketika kita meng-embed sebuah image, Flex akan membungkusnya sebagai class mx.core.BitmapAsset.
Artinya.., akan sulit mengakses class ini di SWF Flash 9. Kecuali dengan menempatkan MovieClipAsset dan BitmapAsset beserta sebagian framework Flex yang terkait di Flash 9 classes directory.

Jun 11

Boleh suka atau nggak setuju!!
Dibanding developer atau programmer bahasa lain, flasher merupakan developer yang paling kurang tidur karena perkembangan teknologi flash sangat cepat.
Dari September 98 Flash 3, Juni 99 Flash 4, Agustus 2000 Flash 5, Maret 2002 Flash 6, September 2003 Flash 7, Agustus 2005 Flash 8, 2006 Flex, April 2007 Flash CS3 (9).
Tidak sampai setahun selalu muncul versi barunya.
Bandingkan dengan Java (dari seri 1.4 ke seri 1.5 perlu berapa tahun?), juga PHP (dari php 4 ke php 5 perlu berapa tahun), .NET ?, VB ?, Perl?

Hampir tidak bisa menghela nafas sebentar pun sewaktu baru selesai memahami salah satu bagian paling abstrak di Flex 2.0.1 yaitu “Flash ApplicationDomain” sekarang sudah muncul Flex 3 yang datang dengan kemampuan cache Flex Framework. Berbarengan juga dengan Adobe AIR beta (a.k.a Apollo), Adobe Flash Player Update 3 juga, coba cek di lab!

Software proprietary lain yang bikin developernya banyak begadang kebanyakan dari jenis multimedia ya? Seperti 3DSMax? Atau ada yang lain? Sedangkan kalo dari jenis Language Background paling cuma Actionscript ya?

Kemana pun arah perkembangan tool favorit anda, selama masih suka pasti selalu bergairah mengikutinya, gak pernah mengeluh..

Yes!! We’re Flash Tech Addict!!

« Previous Entries Next Entries »