1. Buatlah sebuah file baru AS3, dengan ukuran stage 480x800 pixel dan 30 fps.
2. Buat kotak untuk menutupi stage untuk background, convert menjadi movieclip beri
nama “
bg
”
3. Copy objek
plane
,symbol 1 s/d 6 dari projek bahan ke stage.
4. Buat animasi
musuh
menggunakan symbol 1 s/d 6 convert menjadi movieclip beri nama
enemy1,enemy2
dan
enemy3
.
5. Buat persegi panjang dengan ukuran kecil convert menjadi movieclip beri nama
bullet.
6. Hapus semua objek yang dibuat dari stage dengan menekan
delete
.
7. Buka library dengan cara
ctrl+Enter,
klik kanan pada masing-masing movieclip yang
telah dibuat pilih
properties,
kemudian pilih
advanced
beri tanda centang pada
Export
for ActionSript
kemudian
ok.
8. Isikan koding berikut pada frame. (f9)
import flash.events.Event;
import flash.events.KeyboardEvent;
var game:MovieClip; var i:Number = 0; var j:Number = 0;
var screen_w:Number = 800; var screen_h:Number = 480;
var is_left:Boolean = false; var is_right:Boolean = false; var is_space:Boolean = false;
var ammo:MovieClip;
var ammo_ready:Boolean = true; var my_plane:plane;
var game_bg:bg;
function rand(n:Number):Number{
var hasil:Number = Math.floor(Math.random()*n); return hasil;
}
function key_down(e:KeyboardEvent):void{ if (e.keyCode == 37) is_left = true; if (e.keyCode == 39) is_right = true; if (e.keyCode == 32) is_space = true; }
function move_enemy(e:Event):void{ var ob:Object = e.currentTarget; if (ob.hitTestObject(ammo)) {
ammo_ready = true;
ob.parent.removeChild(ob); ammo.y = -200;
} }
function move_enemy_row(e:Event):void{ var ob:Object = e.currentTarget; if (rand(100) == 34 && ob.x<150) {
ob.x += 10; }
if (rand(100) == 54 && ob.x>25) { ob.x -= 10;
} }
function move_ammo(e:Event):void{ var ob:Object = e.currentTarget; if (!ammo_ready){
ob.y-=10; if (ob.y < 0){
ammo_ready = true; ob.y = -200;
} }
}
function draw_level():void { game = new MovieClip(); addChild(game);
game_bg = new bg(); game.addChild(game_bg); for (i=0; i<4; i++) {
var row:MovieClip = new MovieClip(); row.x = 120;
row.y = (5-i)*30; game.addChild(row);
row.addEventListener(Event.ENTER_FRAME, move_enemy_row);
for (j=0; j<20; j++) { var enemy:MovieClip; if (i==1) {
enemy = new enemy1(); } else if (i==2){
enemy = new enemy2(); }else{
enemy.x = j*30; row.addChild(enemy);
enemy.addEventListener(Event.ENTER_FRAME, move_enemy);
} }
ammo_ready = true; my_plane = new plane(); my_plane.x = 400;
my_plane.y = screen_h-50;
my_plane.addEventListener(Event.ENTER_FRAME, move_plane); game.addChild(my_plane);
//amo
ammo = new bullet(); ammo.y = -200;
ammo.addEventListener(Event.ENTER_FRAME, move_ammo); game.addChild(ammo);
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down); stage.addEventListener(KeyboardEvent.KEY_UP, key_up); draw_level();
9. Berikut penjelasan dari koding diatas : var game:MovieClip;
var i:Number = 0; var j:Number = 0;
var screen_w:Number = 800; var screen_h:Number = 480; var is_left:Boolean = false; var is_right:Boolean = false; var is_space:Boolean = false; var ammo:MovieClip;
var ammo_ready:Boolean = true; var my_plane:plane;
var game_bg:bg;
Variabel
game
merupakan
"container"
dari seluruh asset. Dengan memasukkan seluruh
asset ke dalam sebuah movieclip, maka kita dengan mudah mengatur, menambahkan
kode dan menghapus movieclip tersebut. Variabel
is_left,Right,Space
adalah trigger
untuk mendeteksi keyboard, sedangkan variable
ammo,game_bg dan my_plane
adalah
variabel yang mengakses
Class linkage
dari
library
function rand(n:Number):Number{
function draw_level():void { game = new MovieClip(); addChild(game);
game_bg = new bg(); game.addChild(game_bg); ...
my_plane = new plane(); my_plane.x = 400;
my_plane.y = screen_h-50;
my_plane.addEventListener(Event.ENTER_FRAME, move_plane); game.addChild(my_plane);
//amo
ammo = new bullet(); ammo.y = -200;
ammo.addEventListener(Event.ENTER_FRAME, move_ammo); game.addChild(ammo);
fungsi ini merupakan dasar penambahan object ke layar atau disebut sebagai
Display
Object
. Pada awalnya dibuat movieclip kosong yaitu movieclip
game
, kemudian ke
dalam movieclip tersebut ditambahkan asset game seperti "bg" dengan kode
addChild
.
Pada movieclip
my_plane
dan
ammo
diatur posisinya dan diberikan
listener
untuk
bergerak
for (i=0; i<4; i++) {
var row:MovieClip = new MovieClip(); row.x = 120;
row.y = (5-i)*30; game.addChild(row);
row.addEventListener(Event.ENTER_FRAME, move_enemy_row);
for (j=0; j<20; j++) { var enemy:MovieClip; ...
Dengan operasi berulang
for
musuh ditambahkan ke dalam movieclip game dengan
format 4 baris dan 20 kolom. Awalnya dibuat movieclip
row
sebagai kontainer musuh
perbaris. Pada baris 86 ditambahkan
listener move_enemy_row
yang berarti pada
masing-masing baris musuh akan digerakkan secara bersamaan.
for (j=0; j<20; j++) { var enemy:MovieClip; if (i==1) {
enemy = new enemy1(); } else if (i==2){ enemy = new enemy2(); }else{
enemy.x = j*30; row.addChild(enemy);
enemy.addEventListener(Event.ENTER_FRAME, move_enemy);
}
Pada baris di atas variasi musuh melalui movieclip
enemy1-3
ditambahkan ke dalam
movieclip
row
, selanjutnya masing-masing diatur posisinya dan diberikan
listener
move_enemy
agar dapat mendeteksi peluru
function key_down(e:KeyboardEvent):void{ if (e.keyCode == 37) is_left = true; ...
}
function key_up(e:KeyboardEvent):void{ if (e.keyCode == 37) is_left = false; ...
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down); stage.addEventListener(KeyboardEvent.KEY_UP, key_up);
Fungsi di atas digunakan untuk membaca
input keyboard
yang ditekan pemain selama
permainan.
e.keyCode
akan membaca kode keyboard yang ditekan, sebagai contoh
ketika terbaca kode 37 berarti panah kiri sedang ditekan, sehingga variabel
is_left
menjadi bernilai true
function move_plane(e:Event):void{
if (is_left && my_plane.x > 25) my_plane.x -= 5;
if (is_right && my_plane.x < screen_w - 25) my_plane.x += 5; if (ammo_ready && is_space){
...
Dengan terbacanya
input keyboard
kita dapat menggunakannya sebagai acuan untuk
menggerakan moviclip
my_plane
.
function move_enemy(e:Event):void{ var ob:Object = e.currentTarget; if (ob.hitTestObject(ammo)) {
ammo_ready = true;
ob.parent.removeChild(ob); ammo.y = -200;