Tuesday, December 2, 2014

JENIS-JENIS ANIMASI

Hand-Drawn Animation


  • juga dikenali sebagai cel animation atau 2D animation
  • melibatkan beberapa proses yang berturutan :
    • Pencil Drawing : proses melukis
    • Pencil Test : memastikan lukisan yang dihasilkan berjaya memenuhi setiap animasi yang terlibat dan memastikan bahawa lukisan adalah kemas contohnya saiz line yang digunakan
    • Clean-Up : merupakan proses untuk menyamakan standard keseluruhan gaya/style lukisan dari segi penggunaan keyframe dan in-Betweening (contohnya ramai animator yang terlibat dalam satu projek, jadi gaya setiap animator adalah berbeza)
    • Ink & Paint : proses untuk memasukkan warna line dan fill





Stop-motion Animation


  • Juga dikenali sebagai stop motion photography
  • Telah ditemukan oleh Stuart Blakton pada tahun 1906 melukis facial expression seorang tokoh di papan tulis
  • kemudian beliau mengambil gambar dengan still camera
  • seterusnya memadamkan lukisan tersebut dan melukis kembali facial expression yang lain pula
  • Dulu : model dibina menggunakan clay
  • sekarang : sambungan wayar-wayar dan ditutupi dengan kulit getah
  • Mengandungi animasi untuk jointed model dan rakaman posisi/ kedudukan yang berlainan pada satu frame
  • Contoh untuk filem :Wallace & Gromite, Chicken Run King Kong, Jason and The Agronouts (visual effect)


Animatronics


  • Merupakan model yang dikawal oleh komputer dan boleh dianimasikan secara masa nyata
  • Sistem kawalan pergerakan mempunyai komponen mekanikal dan elektronik dan biasanya terdiri daripada metal-joined armature yang dilitupi dengan kulit sintetik dan bergerak menggunakan servomotors
  • Pergerakan animatronics biasanya telah diprogramkan menggunakan perisian forward and inverse kinematic yang mana ia boleh diulang berkali-kali dan dimodifikasi sebaik sahaja disimpan sebagai dalam komputer (digital information)


Performance Animation


  • Puppetry adalah teknik lama dalam performance animation
  • Idea asas adalah menggunakan puppet / aktor yang memakai kostum
  • Apabila diaplikasi secara animasi computer 3D, mempunyai dua modality
    • Live motion captured
    • Processes motion captured
  • Apabila dilaksanakan dengan kemahiran, ia akan menghasilkan pergerakan lebih segar dan semulajadi pada live performance

Character Animation


  • Dianggapkan sebagai tahap animasi tertinggi
  • Memberi kehidupan kepada karektor berkomputer
  • Biasanya dibangunkan dengan kombinasi teknik inverse and forwared kinematics dan motion capture
  • Kebanyakan produksi animasi :
    • Animator – bertanggungjawab untuk membina primary motion untuk setiap karektor
    • Assistant Animator – memperkemaskan primary motion dan menambah secondary motion
  • Primary Motion : aksi utama




Effects Animation


  • Animasi untuk not character-oriented
  • animasi untuk fenomena semulajadi seperti
    • Api, angin, debu dan air (hujan, salji, awan, sungai, air terjun, laut, dll)
    • kesan pencahayaan (percikan api, kilat, bayang, dll)
  • Biasanya akan bergantung kepada prop dan keseluruhan set




Visual Effects Animation for Live Action


  • Memerlukan pendekatan unik yang biasanya berbeza dengan animasi tradisional
  • Matlamat utama – menambah kesan pada live action dan setiap elemen animasi, visual hendaklah sepadan dengan pergerakan, warna, pencahayaan dan perspektif pada live sequence

KONSEP ASAS ANIMASI

PENGENALAN
  • Animasi bermaksud menghidupkan objek/ imej atau lukisan yang tidak bergerak
  • Anima berasal dari bahasa latin yang bermaksud soul (english) / jiwa (melayu)
  • Animasi merupakan seni pergerakan imej yang dipersembahkan yang mana ia tidak bergerak secara realitinya.
  • Dalam animasi, ilusi pergerakan dicapai dengan memaparkan imej statik (pegun) atau kerangka-kerangka dalam turutan secara pantas

DEFINISI ANIMASI

Suatu jujukan imej-imej yang disusun pada satu selang masa tertentu sehingga tercipta sebuah ilusi imej bergerak.



JENIS-JENIS ANIMASI

Terdapat tujuh (7) jenis animasi :

•Hand-Drawn Animation
•Stop Motion Animation
•Animatronics
•Performance Animation
•Character Animation
•Effects Animation
•Visual Effects Animation for Live Action


Thursday, November 13, 2014

The event flow
Flash Player menghantar objek acara apabila sesuatu acara berlaku. Jika target acara ini tidak disenaraikan dalam senarain, Flash Player hantar objek acara langsung ke sasaran acara tersebut. Bagaimanapun, Flash Player hantar objek acara ke dalam senarai paparan, dan objek acara bergerak melalui senarai paparan untuk sasaran acara tersebut.

Event flow  menerangkan bagaimana sesuatu objek bergerak melalui acara senarai paparan. Senarai di paparan dianjurkan dalam bentuk hierarki yang boleh digambarkan sebagai pepohon. Di bahagian atas hierarki senarai paparan adalah Stage, yang merupakan paparan objek  khas yang berfungsi sebagai akar senarai paparan. Peringkat ini diwakili oleh kelas flash.display. Stage hanya boleh diakses melalui objek yang dipamerkan.  Sebagai contoh, jika pengguna mengklik pada senarai paparan objek bernama child1, Flash Player akan menghantar objek acara menggunakan child1 sebagai nod sasaran.

Text Box: Stage
 


Text Box: Child1 NodeText Box: Child2 Node

Text Box: Parent Node 




Jika pengguna mengklik pada Child1 Nod, Flash Player hantar objek acara ke dalam aliran acara tersebut. Seperti yang ditunjukkan oleh gambar berikut, perjalanan objek  masuk bermula pada Stage, bergerak ke bawah untuk Parent Node, kemudian bergerak ke Child1 Node, dan kemudian "Bubbles" kembali ke Stage, bergerak melalui Nod induk lagi dalam perjalanannya kembali ke Stage.





Bahagian yang pertama dipanggil Capture Phase; fasa ini terdiri daripada semua nod dari Stage ke nod sasaran. Bahagian yang kedua disebut Target Phase, yang terdiri dari nod sasaran sahaja. Fasa yang ketiga dipanggil fasa bubbling. Fasa bubbling terdiri daripada nod yang akan dikembalikan dari induk nod sasaran kembali ke Stage.
Event Objects
Event Objects mempunyai dua tujuan utama dalam sistem pengendalian new event. Pertama, peristiwa objek mewakili peristiwa sebenar dengan menyimpan maklumat mengenai peristiwa-peristiwa tertentu dalam satu set ciri. Kedua, objek acara mengandungi satu set kaedah yang membolehkan anda untuk memanipulasi objek acara dan mempengaruhi perilaku sistem event-handling.
Bagi memudahkan akses kepada sifat dan kaedah, API Flash Player mendefinisikan sebuah acara kelas yang berfungsi sebagai kelas asas untuk semua objek acara. Kelas Acara mentakrifkan satu set asas sifat dan kaedah yang umum untuk semua benda acara

Understanding Event class properties (Memahami ciri-ciri kelas Event)
Kelas Acara mendefinisikan beberapa properties dan constants (pemalar) yang menyediakan maklumat penting tentang suatu peristiwa object. Berikut adalah pertara yang penting:
ü  Jenis Event Objects diwakili oleh pemalar dan disimpan dalam  Event.type.
ü  Events  boleh diwakili oleh nilai Boolean dan disimpan dalam Event.cancelable.
ü  Maklumat aliran acara terkandung dalam properties.

Event object types
Setiap objek acara mempunyai jenis kegiatan yang berkaitan. Jenis acara disimpan dalam Event.type  sebagai nilai string. Hal ini berguna untuk mengetahui jenis objek acara sehingga kod anda boleh membezakan objek dari berbagai jenis dari satu sama lain. Sebagai contoh, kod berikut menetapkan bahawa clickHandler () fungsi listener perlu membalas sebarang event dengan klik tetikus untuk dihantar kepada myDisplayObject:
myDisplayObject.addEventListener(MouseEvent.CLICK, clickHandler);
Beberapa jenis acara dikaitkan dengan kelas acara itu sendiri dan diwakili oleh Pemalar kelas acara, ada yang ditunjukkan dalam aturcara berikut dari Events class definition:
package flash.events
{
public class Event
{
// class constants
public static const ACTIVATE:String = "activate";
public static const ADDED:String = "added";
// remaining constants omitted for brevity
}
}

Constants-memberikan cara mudah untuk merujuk kepada jenis acara tertentu. Anda perlu menggunakan pemalar. Jika anda salah mengeja nama yang tetap di dalam kod anda, pengkompil akan menangkap kesalahan, tetapi Jika Anda bukan menggunakan string, kesalahan tipografi boleh tidak nyata pada masa himpunan dan kesalahan yang tidak dijangka dan boleh menjadi sukar untuk mengesan debug. Sebagai contoh, acara listener, gunakan kod berikut:

myDisplayObject.addEventListener(MouseEvent.CLICK, clickHandler);

daripada

myDisplayObject.addEventListener("click", clickHandler);

Event flow information

Properties kelas Event mengandungi maklumat penting tentang sebuah objek acara dan hubungannya dengan aliran acara tersebut, seperti yang dinyatakan di dalam senarai berikut:

ü  Property bubbles mengandungi maklumat tentang bahagian Event flow di mana objek acara yang mengambil bahagian.
ü  Property eventPhase menunjukkan tahap semasa dalam aliran acara tersebut.
ü  Property target menyimpan sebutan mengenai sasaran acara tersebut.
ü  Property currentTarget menyimpan sebutan mengenai objek senarai paparan yang semasa

pemprosesan objek acara tersebut.

Tuesday, November 4, 2014

FAHAM DULU APA ITU ANIMASI

Pengenalan  

Animasi digunakan untuk memberi gambaran pergerakan bagi sesuatu objek. Ia membolehkan sesuatu objek yang pegun atau statik dapat bergerak dan kelihatan seolah-olah hidup. Animasi di dalam sebuah aplikasi multimedia dapat menjanjikan suatu persembahan yang lebih dinamik serta menarik kepada penonton kerana ia memungkinkan sesuatu yng mustahil atau kompleks berlaku di dalam kehidupan sebenar direalisasikan di dalam aplikasi tersebut.

Animasi boleh  dalan bentuk dua dimensi, tiga dimensi ataupun melalui pelbagai kesan khas. Walaupun apa jua bentuk animasi yang digunakan, ia mampu menghasilkan kelainan dalam program yang didokongnya kerana sememangnya jiwa manusia sukakan sesuatu yang dinamik dan bukannya statik.


Walaupun demikian, proses penghasilan animasi bukanlah sesuatu yang boleh dipandang ringan. Ianya memerlukan pengalaman kemahiran serta kepakaran yang tinggi bagi tujuan penghasilan. Pakar animasi yang juga sering dikenali sebagai animator diperlukan dalam jumlah yang banyak bagi menghasilkan suatu animasi yang berkualiti tinggi. Kos penghasilannya juga agak tinggi disamping tempoh masa yang diperlukan bagi membentuk animasi yang dikehendaki juga agak lama. Ini semua memerlukan perancangan yang teliti serta komitmen yang tinggi di kalangan kumpulan pembangunan sesebuah aplikasi yang memerlukan penggunaan animasi.

Tuesday, October 28, 2014

Apa itu Array ?


Array adalah sebuah kumpulan data yang terdiri dari jenis data yang sama. Setiap nilai yang berada di dalam array disebut sebagai element, apapun jenis data. Nombor-nombor data yang menunjuk pada element array disebut subscript atau offset.

Array dapat digambarkan sebagai sebuah rak dengan ukuran yang sama dan untuk menyimpan barang-barang yang sejenis (jenis yang sama). Misalkan rak untuk menyimpan  baju. Perhatikan gambar di bawah ini :





Rak di atas bernama baju, terdiri dari 4 rak yang diberi nomor 0 hingga 3 dan rak tersebut diisi dengan jenis-jenis baju untuk keperluan tertentu. Dalam contoh di atas ada 4 jenis baju,iaitu pesta, tidur, santai, dan olahraga sehingga dapat disebut rak baju mempunyai 4 element. Apabila kita memerintahkan komputer untuk mengambil baju tidur, maka akan dituliskan :

jenis_data baju[2]; //menunjuk pada rak ketiga

Syntax array adalah sebagai berikut :

jenis_data nama_array[jml_element];

Kita dapat mengakses elemen-elemen array dengan menunjuk kepada nombor elemen array. Nombor offset elemen array dimulai dari no l sehingga elemen array yang pertama adalah :

namaArray[0];

Sebagai pegangan kita tentang penomboran array dengan elemennya, maka misalkan sebuah array cubaArray[n] pasti mempunyai n elemen yang dinombori dengan cubaArray[0],cubaArray[1], sampai dengan cubaArray[n-1]. Ada programmer yang menganggap bahawa cubaArray[0] merupakan elemen array ke nol. Hal ini bukan merupakan hal yang baik, karena jika cubaArray[0] merupakan elemen ke nol, maka cubaArray[14] merupakan elemen ke-14. Apakah demikian ? Cuba kita lihat rumus di atas, bukankah sebenarnya cubaArray[14] merupakan elemen ke-15 dari array cubaArray. Oleh kerana itu, lebih baik jika kita dari awal menyebut bahawa cubaArray[0] merupakan elemen pertama dan nombor offset-nya nol.

  

Array #1 : Pengenalan Data Array

Array adalah suatu variable yang dapat menampung jenis data yang sama. Dalam satu variable array dapat menampung satu set data kedalam elemen array.
Sebagai contoh array “nama hari”, maka elemen datanya adalah : “Ahad”,”isnin”,”Selasa”,”Rabu”,”Khamis”,”Jumaat”,”Sabtu”.
Implementasi array pada action script adalah sebagai berikut:
hari=new Array("Ahad","isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu");
selain itu, array juga dapt didefinisikan dengan cara seperti berikut:














hari=new Array();

hari[0]="Minggu";

hari[1]="Senin";

hari[2]="Selasa";

hari[3]="Rabu";

hari[4]="Kamis";

hari[5]="Jumat";

hari[6]="Sabtu";

Index data selalu bermula dengan angka 0, sehingga  jumlah elemen array ada 7 maka indexnya adalah 0-6.
Untuk melakukan pengujian, array juga dipanggil dengan perintah trace.
trace(hari);
                                                                                    
Sekarang kita pelajari bagaimana cara mengakses data pada array.
Untuk mengakses elemen array tertentu, kita juga memanggilnya dengan menuliskan index yang di tuju.
trace(hari[3]);  //melihat data hari pada index ke 3.
Array memiliki beberapa properti yang dapat digunakan untuk memanipulasi data seperti menambah, menghapus atau menyisipkan data.
push()
Metode push() berfungsi menambah elemen data pada array pada index terakhir.






produk=new Array();

produk.push("Photoshop");

produk.push("Flash");

trace(produk);//output: Photoshop, Flash
pop()
Metode pop() berfungsi untuk menghapus data array pada index terakhir.


produk.pop();

trace(produk); //output: Photoshop
splice()
Metode splice() berfungsi untuk menghapus sekaligus menambahkan elemen baru pada array.






produk=new Array("Adobe","Flash","Photoshop");

trace(produk);//output:"Adobe","Flash","Photoshop"

produk.splice(0,1,"Dreamweaver");//menghapus "Adobe" dan menambahkan "Dreamweaver"

trace(produk);//output:"Dreamweaver","Flash","Photoshop"


Sebelum ini kita sudah mengenal data array dan cara mengakses data array. Sekarang kita pelajar jenis array yang memiliki data berdimensi 2 atau multidimensi.
Array multidimensi dapat diilustrasikan seperti sebuah jadual dimana jadual tersebut memiliki baris dan kolum.
index
0
1
2
3
0
5
0
25
9
1
5
9
17
5
2
9
12
11
12
3
32
3
5
2
Cara mendeklarasikan array 2 dimensi adalah sebagai berikut:
var dataNilai:Array=new Array();

dataNilai[0]=[5,0,25,9];

dataNilai[1]=[5,9,17,5];

dataNilai[2]=[9,12,11,12];

dataNilai[3]=[32,3,5,2];

trace(dataNilai);
Untuk mengkses data array tertentu, cukup memanggilnya dengan memasukan index baris dan kolum yang di tuju:

trace(dataNilai[3][1]);//output:3


  
Di AS3 ada tiga types of "list" object: Arrays, Vectors & Dictionaries. Ketiganya memungkinkan Anda untuk menyimpan atau  menampung data sehingga anda dapat mengaksesnya kembali.

Array

CUBA DAPATKAN OUTPUT-OUTPUT DENGAN ATURCARA ARRAY DIBAWAH
Array adalah cara paling sederhana dan paling banyak digunakan

Membuat array kosong
var a:Array = new Array( );
trace(a);
membuat 5 data array
var b:Array = new Array(5);
trace(b);
membuat data siti,bob,aniq,azie,Kak Katy,niza,miza,alia,Anas
var c:Array = new Array("siti","bob","aniq","azie","Kak Katy","niza","miza","alia","Anas");
trace(c);
menampilkan jumlah elemen dalam array
trace(c.length);
mengakses elemen dalam array
trace(c[5]);
menganti elemen dalam array
trace(c[4]="SKM2101");
mencari indeks elemen dalam array
trace(c.indexOf("niza"));
membuat reverse pada Array (reverse atau sort)
var oceans:Array = ["ayam", "lembu", "itik", "kambing"];
oceans.reverse();
membuat sort pada Array
var oceans:Array = ["ayam", "lembu", "itik", "kambing"];
oceans.sort();
Tutorial reverce dan sort dalam Array
var poets:Array = ["saya", "suka", "tidur", "dalam","Kelas",];
poets.sort();
trace(poets);
poets.sort(Array.CASEINSENSITIVE);
trace(poets);
poets.sort(Array.DESCENDING);
trace(poets);
poets.sort(Array.DESCENDING | Array.CASEINSENSITIVE);
trace(poets);
*Cuba Latihan ini dan tukar sort kepada reverse


  ARRAY
Tugas biasa array 
Berikut adalah tugas-tugas yang biasa dalam array:
Mewujudkan tatasusunan diindeks
Menambah dan mengeluarkan unsur
Menyusun unsur  
Mengekstrak bahagian array
Bekerja dengan array bersekutu
Bekerja dengan tatasusunan multidimensi
Menyalin elemen array
Mewujudkan subkelas array


Indexed Arrays
Arrays indeks menyimpan satu siri satu atau lebih nilai-nilai yang dianjurkan supaya setiap nilai boleh  diakses dengan menggunakan nilai integer tak bertanda. Indeks pertama sentiasa bilangan 0, dan kenaikan indeks dengan 1 untuk setiap elemen berikutnya ditambah kepada array.

// Use Array constructor.
var myArray:Array = new Array();
myArray.push("one");
myArray.push("two");
myArray.push("three");
trace(myArray); // output: one,two,three
// Use Array literal.
var myArray:Array = ["one", "two", "three"];
trace(myArray); // output: one,two,three

Creating Arrays
Fungsi Creating Array  boleh digunakan dalam tiga cara. Pertama, jika anda memanggil pembina tanpa argument, anda akan mendapat nilai kosong. Sebagai contoh, kod berikut panggilan Array yang pembina tanpa argument


var names:Array = new Array();
trace(names.length); // output: 0

jika anda menggunakan nombor sebagai satu parameter untuk pembina Array itu, dengan nilai setiap unsur yang bersedia untuk undefined. ia mestilah  integer  antara nilai 0 dan 4294967295. Sebagai contoh, kod berikut panggilan pembina Array dengan hujah angka tunggal:
var names:Array = new Array(3);
trace(names.length); // output: 3
trace(names[0]); // output: undefined
trace(names[1]); // output: undefined
trace(names[2]); // output: undefined

jika anda memanggil constructor dan senarai  sebagai parameter, array created, dengan unsur-unsur yang sepadan dengan setiap parameter.  Berikut adalah  tiga kod untuk  Array created:

var names:Array = new Array("John", "Jane", "David");
trace(names.length); // output: 3
trace(names[0]); // output: John
trace(names[1]); // output: Jane
trace(names[2]); // output: David


Inserting Array Element
Tiga daripada kelas Array kaedah push (), unshift (), dan splice () - membolehkan anda untuk memasukkan unsur-unsur ke dalam array.

Push ()
kaedah menyertakan satu atau lebih unsur-unsur ke akhir satu array. Dalam erti kata lain, elemen terakhir dimasukkan ke dalam array menggunakan push () kaedah akan mempunyai nombor indeks yang tertinggi.

unshift ()
kaedah memasukkan satu atau lebih unsur-unsur di permulaan , yang sentiasa di nombor indeks 0.


splice()
kaedah akan memasukkan apa-apa bilangan item di indeks yang dinyatakan dalam array.
Contoh :
var planets:Array = new Array();
planets.push("Mars"); // array contents: Mars
planets.unshift("Mercury"); // array contents: Mercury,Mars
planets.splice(1, 0, "Venus", "Earth");
trace(planets); // array contents: Mercury,Venus,Earth,Mars

Removing array elements
Tiga kaedah yang Array pop (), shift (), dan splice () - membolehkan anda untuk menghapuskan unsur-unsur dari array

pop (),
shift() ,
splice()-

Pop ()
kaedah menyingkirkan elemen dari array yang terakhir. dalam erti kata lain, ia membuang elemen di nombor indeks yang tertinggi.

Shift()
kaedah menyingkirkan elemen dari permulaan array, yang bermaksud bahawa ia sentiasa membuang elemen di nombor indeks 0.

Splice ()
yang juga  digunakan untuk memasukkan  unsur-unsur, menghilangkan nombor  elemen bermula di nombor indeks yang ditetapkan.
CONTOH
var oceans:Array = ["Victoria", "Pacific", "Aral", "Superior", "Indian","Huron"];
oceans.splice(2, 2, "Arctic", "Atlantic"); // replaces Aral and Superior
oceans.pop(); // removes Huron
oceans.shift(); // removes Victoria
trace(oceans); // output: Pacific,Arctic,Atlantic,Indian

Sorting an array
Terdapat tiga kaedah-reverse (), sort (),dan sortOn () - yang membolehkan anda untuk menukar perintah array, sama ada dengan mengasingkan atau menterbalikkan perintah itu. Semua kaedah ini mengubah suai pelbagai yang sedia ada.
Reverse()
sort ()
sortOn ()

reverse ()
kaedah menukar giliran susunan seperti yang terakhir elemen menjadi elemen pertama, unsur kedua terakhir menjadi elemen kedua, dan sebagainya.

var oceans:Array = ["Arctic", "Atlantic", "Indian", "Pacific"];
oceans.reverse();
trace(oceans); // output: Pacific,Indian,Atlantic,Arctic

Sort ()
kaedah membolehkan anda untuk menyusun pelbagai dalam pelbagai cara yang telah ditetapkan, dan juga membolehkan anda membuat  sorting algoritma.

var poets:Array = ["Blake", "cummings", "Angelou", "Dante"];
poets.sort(); // default sort
trace(poets); // output: Angelou,Blake,Dante,cummings
poets.sort(Array.CASEINSENSITIVE);
trace(poets); // output: Angelou,Blake,cummings,Dante
poets.sort(Array.DESCENDING);
trace(poets); // output: cummings,Dante,Blake,Angelou
poets.sort(Array.DESCENDING | Array.CASEINSENSITIVE); // use two options
trace(poets); // output: Dante,cummings,Blake,Angelou



sortOn ()
kaedah membolehkan anda untuk menyusun pelbagai diindeks objek yang mempunyai satu atau lebih ciri-ciri yang sama yang boleh digunakan sebagai jenis kunci.

poets.sortOn("born", Array.NUMERIC);
for (var i:int = 0; i < poets.length; ++i)
{
trace(poets[i].name, poets[i].born);
}
/* output:
Wang 701
Dante 1265
Blake 1757
cummings 1894
Angelou 1928

*/