PELATIHAN PEMROGRAMAN
ACTION SCRIPT
MACROMEDIA FLASH 8
Oleh :
Toni Setyawan, ST
NIP : 132299006
Tim Produksi Multimedia
Pada gambar di atas instance name dari movie clip tersebut adalah mc. Untuk
merubah propertiesnya mengunakan scrip gunakan perintah dibawah ini (jangan dijalankan
semua Action Script bersama-sama) :
mc._x = 0; koordinat x
mc._y = 0; koordinat y
mc._xscale = 100; rasio x (%)
mc._yscale = 100; rasio y (%)
mc._width = 100; lebar (pixel)
mc._height = 100; tinggi (pixel)
mc._alpha = 50; tranparan (max 100)
mc._rotation = 15; rotasi (derajat)
mc._visible = false; nampak
mc._x = _xmouse; disamakan koor mouse
mc._y = _ymouse; disamakan koor mouse
warna = new Color(mc); digunakan untuk merubah
warna.setRGB(0x77FF23); warna
Buatlah Movie clip dengan instance name mc kemudian isi dengan salah satu AS properties
seperti teks diatas.
Pada saat dilakukan test movie (Ctrl-Enter) scrip hanya dibaca sekali saat loading
saja. Jika ingin mc berjalan mengunakan perintah scrip kita dapat mengunakan perintah
dibawah ini
Karena scrip tersebut hanya dibaca sekali (saat loading) maka perubahannya hanya
sekali saja. Bila kita menginginkan script dibaca terus maka kita harus membuat script
tersebut selalu dibaca hingga properties movie clip selalu berubah. Ada dua cara yang dapat
dilakukan :
1. Menambah 1 frame (frame 1 dan frame 2 sama) pada time line.
2. Tambahkan scrip berikut ini :
onEnterFrame = function () {
mc._x +=1;
}
Scrip diatas membuat perintah dibaca berulang-ulang sesuai pergerakan frame (meski
frame hanya 1 sebenarnya flash tetap menjalankan frame sesuai dengan frame rate
yang telah di set pada properties dokumennya)
Latihan :
1. Buatlah perubahan properties yang berkelanjutan untuk properties yang lain.
Agar kita membuat script pada posisi yang tepat, clik dahulu posisi yang dikehendaki.
Bila ingin membuat AS pada frame, clik frame hingga muncul tulisan Action – Frame di
atas docker AS seperti gambar dibawah ini. Lalu ketik listing program pada tempat yang
disediakan.
Buatlah Movie clip dengan instance name mc dan button dengan instance name bt
kemudian isi AS seperti gambar diatas.
2. Action Script pada Button
Pengunaan AS pada button selalu diikuti dengan event. Jadi AS tersebut akan dijalankan
pada saat event berlangsung. Bila ingin membuat AS pada button, clik button hingga
muncul tulisan Action – Button di atas docker AS seperti gambar dibawah ini. Lalu ketik
listing program pada tempat yang disediakan.
Untuk memunculkan event seperti gambar diatas, klik listing On lalu klik Script Assist.
Event pada button diatas dapat berjalan bersama-sama.
Buatlah Movie clip dengan kemudian isi AS pada movie clip tersebut seperti gambar di
atas.
Macam event pada movie clip dapat dilihat pada gambar berikut
Untuk memunculkan event seperti gambar diatas, klik listing On lalu klik Script Assist.
Event pada button diatas dapat berjalan bersama-sama.
Latihan :
1. Buatlah beberapa movie clip dan button kemudian isikan program untuk mengatur movie
clip dengan berbagai cara.
Buat movie clip kemudian masukkan listring program dibawah ini sebagai AS pada movieclip
tersebut lalu test movie (Ctrl-Enter).
onClipEvent (load) {
this.onPress = function() {
this.startDrag();
};
this.onRelease = function() {
this.stopDrag();
};
}
Ubah baris ketiga menjadi seperti dibawah ini dan rasakan bedanya!
Keterangan AS :
- false : menyatakan mc tidak dikunci dengan center (coba ubah dengan true)
- angka 1 : batas kiri
- angka 2 : batas atas
- angka 3 : batas kanan
- angka 4 : batas bawah
Buatlah aplikasi menjodohkan dengan menambahkan movie clip dengan instance name
mctarget (buat lebih besar dari movie clip sebelumnya, buat dalam layer yang berbeda dan
tempatkan dibawah layer pertama) sebagai tempatnya. Kemudian ubah AS pada movieclip
pertama dengan listing berikut :
onClipEvent (load) {
this.onPress = function() {
this.startDrag();
};
this.onRelease = function() {
this.stopDrag();
if (eval(this._droptarget) == _parent.mctarget) {
this._x = _parent.mctarget._x;
this._y = _parent.mctarget._y;
}
};
}
Keterangan AS :
- Perintah if (eval(this._droptarget) == _parent.mctarget) digunakan untuk menyatakan
apakah saat dilepas mouse berada pada mctarget atau tidak. Mctarget ditambahkan
_parent karena mctarget berada diluar mc tempat AS ditempatkan.
- Pada perintah if ini dapat ditambahkan perintah yang lain untuk menyatakan apakah
peletakkanya sesuai atau tidak, misalkan ditambahkan effek suara yang sesuai.
- Perintah this._x = _parent.mctarget._x; digunakan untuk menyatakan bila target sesuai
maka koordinat x dari mc akan digeser tepat ditengah mctarget, begitu pula untuk
koordinat y.
Buatlah aplikasi menjodohkan dengan kriteria movieclip terkunci bila sudah berada pada
posisi yang tepat dan akan kembali ke tempat semula bila salah.
1 onClipEvent (load) {
2 bunyi = new Sound();
3 orix = this._x;
4 oriy = this._y;
5 kondisi = false;
6 this.onPress = function() {
7 if (!kondisi) {
8 this.startDrag(true);
9 }
10 };
11 this.onRelease = function() {
12 this.stopDrag();
13 if (eval(this._droptarget) == _parent.mctarget) {
14 this._x = _parent.mctarget._x;
15 this._y = _parent.mctarget._y;
16 kondisi = true;
17 bunyi.attachSound("resbenar");
18 bunyi.start();
19 } else {
20 this._x = orix;
21 this._y = oriy;
22 bunyi.attachSound("ressalah");
23 bunyi.start();
24 }
25 };
26 }
Keterangan AS :
Baris 2 adalah deklarasi object suara untuk sound effeck
Baris 3 dan 4 adalah memasukan properties mc ke dalam variabel untuk mengetahui posisi
awal mc
Baris 5 mendeklarasikan variabel kondisi yang menyatakan mc belum menempati posisi
yang benar
Baris 7 jika posisi masih salah maka mc dapat di drag saat di klik, berarti bila variabel
kondisi true maka mc tak dapat digerakkan
Baris 16 jika if pada baris ke 13 berisi true (posisi mc sudah benar) maka variabel kondisi
diubah menjadi true.
Baris 17 memasukkan suara “resbenar” yang terdapat pada library ke dalam object suara
dengan nama bunyi (lihat perhatian).
Baris 18 membunyikan object suara dengan nama bunyi
Baris 20 dan 21 mengembalikan posisi mc ke tempat semula (karena salah)
Baris 22 memasukkan suara “ressalah” yang terdapat pada library ke dalam object suara
dengan nama bunyi (lihat perhatian).
Baris 23 membunyikan object suara dengan nama bunyi
Perhatian :
- Untuk membunyikan suara dengan AS pastikan suara sudah di import ke dalam library.
- Selanjutnya suara dalam library dibuat linkage dengan cara klik kanan suara di library
tersebut lalu pilih linkage maka akan muncul pop up seperti gambar dibawah ini.
Agar aplikasi dapat di ulang buatlah tombol ulang, kemudian isikan AS pada button tersebut
dengan listing di halaman berikut ini :
Latihan :
1. Buatlah aplikasi menjodohkan dengan mc dan target lebih dari satu.
Tips
- Untuk mempercepat proses copy kan saja mc dan mctarget, kemudian ubah instance
namenya.
- Untuk AS hasil copyan sesuaikan listing program yang mengandung instnce name.
- Pada tombol ulang tambahkan seperti baris 2 – 4 dan sesuaikan dengan instance
name yang baru.
- Bila menginginkan toleransi yang tinggi, kecilkan ukuran mctarget. Dan untuk
tempatnya buat gambar biasa diluar mctarget.
onClipEvent (load) {
knob.onPress = function() {
this.startDrag(false,0,0,100,0);
};
knob.onRelease = function() {
this.stopDrag();
};
knob.onReleaseOutside = function() {
this.stopDrag();
};
}
Test Movie tersebut (Ctrl-Enter) bila berfungsi selayaknya slider, kemudian buatlah
dynamic teks dengan show border around text aktif dan var : out1. Setelah itu
pasangkan AS pada frame root (utama) listing program pada halaman berikut ini :
cara merubah properties teks dari statik menjadi dynamic dapat dilihat dari gambar
berikut ini :
Static Text
Variabel
Dynamic Text Show border
Input Teks around text
Test Movie tersebut (Ctrl-Enter) bila berfungsi dengan benar maka gerakan knob akan
dapat dibaca (muncul pada dynamic text).
Anda juga bisa mengunakan slider bawaan dari flash dengan cara :
1. Klik pulldown windows > common libraries > Buttons.
2. Kemudian buka map classic buttons > knobs & faders
3. Tarik fader – round ke state.
4. Buat instance name slider2 pada slider baru.
5. Copykan dynamic teks dan ubah var dengan out2
6. Tambahkan AS di frame root dengan AS out1 = this.slider.knob._y; menyisip di
baris ke 3
Tips
- Anda dapat memutar slider tersebut sesuai keingginan anda tetapi jangan merubah
AS karena meski movie clip slider2 dirotasi tetapi orientasi movie clip knob pada
movie clip slider2 tetap sama.
- Setelah anda dapat membaca slider (menjadi variabel out)maka anda dapat
mengunakan variabel out sebagai perubah properties movie clip yang lain misalnya :
mc1._height = out1;
mc1._width = out2;
4. Input teks
Buatlah movieclip dengan instance name mc, kemudian buatlah input teks dengan var :
rota. Setelah itu pasangkan AS pada frame root (utama) listing program berikut ini :
onEnterFrame = function () {
mc._rotation += Number(rota);
};
Test movie (Ctrl-Enter) tersebut lalu cobalah isikan angka ke dalam kotak yang tersedia.
Jika benar maka mc akan berputar dengan kecepatan yang sesuai dengan angka yang
tertulis.
5. Radio Button
Radio button adalah kumpulan button yang hanya dapat diseleksi salah satunya. Untuk
membedakkan kelompok radio button digunakan group name. Jadi jika memiliki group
name yang sama, kelompok tersebut hanya bisa diseleksi salah satu. Cara mengeluarkan
dan mengunakan radio button sebagai berikut :
1. Keluarkan docker components dengan cara klik pulldown menu windows >
components atau dengan cara tekan Ctrl-F7.
2. Clik and drag symbol radio button ke dalam state.
3. Ubah propertiesnya dengan cara clik radio button dan lihat docker properties.
Kemudian klik tab parameters, jika benar akan muncul tampilan seperti di halaman
berikutnya :
onEnterFrame = function () {
mc._xscale = ukuran.getValue();
mc._yscale = ukuran.getValue();
};
perintah ukuran.getValue() digunakan untuk membaca data yang terpilih pada radio
button dengan groupName ukuran.
Latihan
1. Buatlah program apilkasi simulasi yang menampilkan :
- dua buah slider yang ditampilkan besarannya dan digunakan untuk mengatur
koordinat sebuah bola pertama yang berputar.
- teks input yang digunakan untuk mengatur kecepatan putar bola kedua dan 4 macam
ukuran bola kedua yang diatur oleh 4 radio button
tips : kombinasikan contoh-contoh program yang telah dibahas sebelumnya.
2. Buatlah program untuk mengitung dua macam teks input ke dalam sebuah teks output
dengan fungsi kali, bagi, kurang, tambah yang masing-masing diatur oleh tombol
tips :
- buat 2 teks input yang masing masing bervariabel bil1 dan bil 2.
- buat 1 teks output yang bervariabel hasil
- buat 4 button yang mengambarkan fungsi perhitungan dimana masing-masing buton
diisi AS sebagai berikut ;
3. Buat program untuk mensimulasikan gerakan parabola dari sebuah peluru meriam yang
ditembakkan.
Keterangan :
- input 2 slider yang diperlihatkan besarannya untuk menentukan sudut tembakan dan
kecepatan awal peluru.
- output berupa gerakan animasi peluru yang melambung dan berhenti ditanah.
- beri tombol untuk memulai tembakan dan mengulang animasi.
- rumus gerakan parabola :
x = v0 . t . cos α
y = v0 . t . sin α - t2
tips :
- buatlah time line menjadi tiga bagian utama : membaca parameter (sudut dan
kecepatan awal, animasi gerak peluru dan berhenti.
- masing-masing bagian dilompatkan dengan perintah timeline control pada kondisi
tertentu atau setelah menekan tombol.
Quis
Dalam membuat quis sebenarnya ada banyak sekali aturan atau cara yang ada.
Dalam modul ini akan mempelajari 2 macam quis yang sering digunakan dalam program on
line. Dua quis itu sering kita sebut latiha dan tes. Latihan adalah bentuk quis yang memiliki
respon dalam setiap jawaban soal dan penyelesaian bila jawaban salah. Sedang test adalah
bentuk quis yang soalnya random dan ada perhitungan nilainya.
1. Quis 1
Pembuatan quis 1 atau menurut Pustekkom bernama latihan memiliki berbagai
cara. Kemungkinan besar listing program atau analoginya akan berbeda dengan buatan
pustekkom, akan tetapi hasil akhir atau tampilannya sama yaitu quis dengan respon dan
penyelesaian bila jawaban salah. Berikut ini cara dan analogi pembuatan latihan dalam
pembelajaran online versi saya :
Sebelum memulai kita buat/masukkan dahulu komponen yang ada pada library
seperti gambar dibawah ini
symbol dengan type Compiled Clip adalah symbol yang
diambil dari docker components. Caranya click&drug
symbol di components ke library.
Symbol dengan nama penyel+s02 adalah movie clip yang dibuat sendiri guna
menampilkan penyel02 yang ukurannya lebih besar dari tempat yang akan disediakan.
Movie clip ini akan menambahkan ScrollPane pada movie clip penyel02 yang ukurannya
besar (sebagai contoh bila uraian penyelesaiannya panjang).
Frame 1 :
Frame ini berisi petunjuk dan button (dapat diambil dari componen yang diubah
parameter label dan instance namenya) untuk memulai yang diberi instance name mulai.
Listing AS pada frame ini sebagai berikut :
1 stop();
2 jawab.removeEventListener("click", tsListener);
3 mulai.onRelease = function() {
4 play();
5 };
6 _root.onLoad = function() {
7 import mx.managers.PopUpManager;
8 import mx.containers.Window;
9 import mx.controls.RadioButton;
10 };
11 function koreksi() {
12 if (jawab.getValue() == kunci) {
13 win = PopUpManager.createPopUp(_root, Window, true,
{title:"Jawaban anda",closeButton:true, contentPath:"resbetul"});
14 win._x = 425;
15 win._y = 200;
16 win.setSize(158, 185);
17 lo = new Object();
18 lo.click = function() {
19 win.deletePopUp();
20 play();
21 };
22 win.addEventListener("click", lo);
23 } else {
24 win = PopUpManager.createPopUp(_root, Window, true,
{title:"Jawaban anda",closeButton:true, contentPath:"ressalah"});
25 win._x = 425;
26 win._y = 200;
27 win.setSize(158, 185);
28 lo = new Object();
29 lo.click = function() {
30 win.deletePopUp();
31 win = PopUpManager.createPopUp(_root, Window, true,
{title:"Penyelesaian", closeButton:true, contentPath:penyelesaian});
32 win._x = 260;
33 win._y = 200;
34 win.setSize(325, 187);
35 lo = new Object();
36 lo.click = function() {
37 win.deletePopUp();
38 play();
39 };
40 win.addEventListener("click", lo);
41 };
42 win.addEventListener("click", lo);
43 }
44 }
Frame 2
Frame ini berisi teks soal dan radio button untuk menjawab pertanyaan. Isi parameter
radio button dengan groupName = jawab dan data = a/b/c/d/e sesuai dengan
urutannya. Listing AS pada frame ini sebagai berikut :
1 stop();
2 kunci = "a";
3 penyelesaian = "penyel01";
4 var tsListener:Object = new Object();
5 tsListener.click = function() {
6 koreksi();
7 };
8 jawab.addEventListener("click", tsListener);
Keterangan AS :
Baris 1 untuk menghentikan frame.
Baris 2 untuk mendeklarasikan kunci jawaban untuk soal pada frame ini.
Baris 3 untuk mendeklarasikan isi penyelesaian yang akan ditampilkan oleh popup
window.
Baris 4 – 5 mendeklarasikan listener untuk saat di click.
Baris 6 isi perintah saat tslistener di click. Ini adalah perintah untuk memanggil function
koreksi.
Baris 7 menutup baris 5
Baris 8 mendeklarasikan tslistener itu milik radio button dengan groupname jawab.
Frame 3, 5, 7, 9, 11
Frame ini sengaja dikosongkan untuk memberi jeda frame agar radio button tidak
mempengaruhi radio button pada frame selanjutnya
Frame 4, 6, 8, 10
Frame ini isinya sama dengan frame 2 tapi untuk Asnya hanya sampai baris ke 3 sedang
baris ke 4 dan seterusnya dihilangkan. Hal ini dikarenakan tslistener untuk radio button
jawab akan berfungsi terus hingga dihilangkan (remove) seperti pada baris 2 frame1.
2. Quis 2
Pembuatan quis 2 atau menurut Pustekkom bernama tes memiliki berbagai cara.
Quis ini tidak memakai respon tetapi ada nilai hasil koreksi jawaban dan soalnya dibuat
random. Berikut ini cara dan analogi pembuatan tes dalam pembelajaran online versi
saya :
Sebelum memulai kita buat/masukkan dahulu komponen yang ada pada library
seperti gambar dibawah ini
Pada aplikasi ini terdapat 2 layer yang dibedakaan antara tempat soal dan button.
Hal ini dilakukan karena salah satu button diinginkan untuk tampil di semua frame soal.
Sebelum membuat layer soal yang rumit kita buat dahulu layer button dulu yang lebih
mudah.
mulai.onRelease = function() {
play();
};
program diatas untuk menjalankan program pada baris 2 saat button tersebut di click.
1 if (nosoal == tampil) {
2 lanjut.label = "Hasil tes";
3 }
4 lanjut.onRelease = function() {
5 if (jawab.getValue() == kunci) {
6 benar += 1;
7 }
8 if (nosoal == tampil) {
9 gotoAndStop("selesai");
10 } else {
11 nosoal += 1;
12 gotoAndPlay(2);
13 }
14 };
Keterangan AS:
Baris 1 – 3 menyatakan saat soal terakhir maka label button berubah menjadi hasil Tes.
Baris 4 untuk mendeklarasikan perintah untuk tombol lanjut.
Baris 5 – 7 untuk mengkoreksi jawaban, jika jawaban sama dengan kunci maka variabel
benar ditambah 1
Baris 8 – 13 untuk menanyakan apakah sudah sampai soal terakhir, jika ya maka goto
ke frame name selesai. Jika tidak goto ke frame 2 dan variabel nosoal ditambah 1.
Baris 14 untuk menutup deklarasi baris 4.
ulang.onRelease = function() {
gotoAndPlay(1);
};
program diatas untuk menjalankan program pada baris 2 (perintah untuk jump ke
frame1) saat button tersebut di click.
1 stop();
2 benar = 0;
3 nosoal = 1;
4 tampil = 5;
5 semua = 5;
6 macamarray = [];
7 tampilarray = [];
8 for (n=0; n<semua; n++) {
9 macamarray[n] = n+1;
10 }
11 for (n=0; n<tampil; n++) {
12 soal = random(semua-n);
13 tampilarray[n] = macamarray[soal];
14 newArray = macamarray.splice(soal, 1);
15 }
Keterangan AS :
Baris 1 menghentikan frame.
Baris 2 mendeklarasikan variabel benar dengan isi 0.
Baris 3 mendeklarasikan variabel nosoal dengan isi 1.
Baris 4 mendeklarasikan variabel tampil dengan isi 5 = jumlah soal yang akan tampil.
Baris 5 mendeklarasikan variabel semua dengan isi 5 = total semua soal yang ada.
Baris 6 mendeklarasikan array dengan nama macamarray.
Baris 7 mendeklarasikan array dengan nama tampilarray.
Baris 8 – 10 untuk mengisi array macamarray dengan angka 1 sampai variabel semua
dalam hal ini isi array adalah [1, 2, 3, 4, 5].
Baris 11 – 15 untuk mengambil secara acak isi array macamarray ke dalam array
tampilarray sejumlah variabel tampil.
gotoAndStop(2+tampilarray[nosoal-1]);
1 stop();
2 resume = (nama+", dari "+tampil+" pertanyaan anda menjawab dengan
benar "+benar+" pertanyaan.");
3 nilai = benar*10/tampil;
4 nilainya = ("Nilai anda = "+nilai);
5 if (nilai == 10) {
6 ket = ("Nilai yang sempurna !");
7 } else {
8 if (nilai>5) {
9 ket = ("Anda lulus, tetapi anda disarankan untuk menperdalam
pemahaman anda.");
10 } else {
11 ket = ("Nilai anda lebih kecil dari 6, anda disarankan untuk
mengulang lagi pelajaran.");
12 }
13 }
Pengalaman Kerja
Mulai Agustus 2008 : Dosen Tidak Tetap di Jurusan Teknologi Pendidikan
Universitas Negeri Semarang.
2005 - 2008 : Dosen Tidak Tetap di Jurusan Multimedia, Fakultas Ilmu
Komputer Universitas Dian Nuswantoro.
Mulai Desember 2001 : Staf Produksi di Balai Pengembangan Multimedia Semarang.
April – Juni 2001 : Anggota Tim “Technical Assistance Training Program” untuk
membuat program “Sistem Informasi Management” untuk
proyek Word Bank dengan STIE Anindyaguna Semarang.
Juli – Agustus 2000 : Anggota Tim Philarindo Perkasa untuk membuat Local Area
Network di APAC INTI Corporation, Semarang.
Desember 1999 : Anggota Tim Philarindo Perkasa untuk membuat Local Area
Network di SMK Negeri 3 Pati.
November 1999 : Anggota Tim Philarindo Perkasa untuk membuat Local Area
Network di Kantor Karantina Tumbuhan Tanjung Mas,
Semarang.
Maret 1999- Juli 2003 : Dosen Luar Biasa di Fakultas Teknik Universitas,
Pandanaran Semarang.
Mulai September 1998 : Dosen Luar Biasa di Fakultas Teknik Universitas Diponegoro
Semarang.
Juli – Agustus 1998 : Anggota Tim Philarindo Perkasa untuk membuat program
“Sistem Informasi Pendidikan dan Pelatihan” untuk Perum
Perhutani Madiun.
Maret – Mei 1998 : Anggota Tim Philarindo Perkasa untuk membuat Local Area
Network di AKA Wikajasa Semarang.
Toni Setyawan, ST