Tutorial Flash Ledakan Berantai

Ledakan Berantai

 

 

Pada tutorial pertama di tahun 2013 ini :D   kita akan membuat sebuah kerangka (prototype) game. Kerangka game yang akan kita buat kali ini berupa sebuah lingkaran yang jika ditekan akan menjadi besar. Saat lingkaran sudah mencapai besar yang maksimal, maka lingkaran akan meledak dan menembakan peluru ke 4 mata angin. Jika lingkaran yang lain terkena peluru ini maka akan menjadi lebih besar dan jika besar sudah maksimal maka akan meledak dan menembakan peluru. Nah tugas kita adalah bagaimana caranya seluruh lingkaran bisa pecah dengan menggunakan ledakan berantai ini.
1. Buatlah sebuah flash document dengan ukuran 550×40 dan frame rate 30fps.
2. Buatlah sebuah lingkaran dengan ukuran 15×15 pixels.
lingkaran
3. Seleksi lingkaran tersebut dan tekan F8. Pada panel yang muncul ketikan “lingkaran” pada kotak Name, pilih MovieClip sebagai Typenya, lalu tekan Ok.
symbol lingkaran
4. Hapus movieclip lingkaran yang ada distage lalu buka panel library. Klik kanan movieclip lingkaran yang berada di library kemudian pilih linkage pada menu yang ada.
5. Beri centang pada Export for Actionscript dan ketikkan “lingkaran” pada bagian Identifier lalu tekan Ok.
linkage lingkaran
6. Buatlah sebuah persegi panjang dengan ukuran 10×5 pixels
pluru
7. Seleksi persegi panjang tersebut dan tekan F8. Pada panel yang muncul ketikan “peluru” pada kotak Name, pilih MovieClip sebagai Typenya, lalu tekan Ok.
symbol peluru
8. Hapus movieclip peluru yang ada distage lalu buka panel library. Klik kanan movieclip peluru yang berada di library kemudian pilih linkage pada menu yang ada.
9. Beri centang pada Export for Actionscript dan ketikkan “peluru” pada bagian Identifier lalu tekan ok.
linkage peluru
10. Dengan menggunakan Line Tool atau Rectangle Tool, buatlah sebuah objek seperti gambar dibawah ini lalu letakkan ditengah-tengah stage:
slot
11. Klik frame 1 dan tekan F9. Pada panel actions yang muncul masukkan script berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//untuk mendetksi apakah ada peluru distage
peluruStage = 0;
 
//untuk menampung lingkaran distage
_root.createEmptyMovieClip("tk1",_root.getNextHighestDepth());
 
//fungsi membuat lingkaran
function buatLingkaran(xpos, ypos, size) {
 lingkaran = tk1.attachMovie("lingkaran", "lingkaran"+tk1.getNextHighestDepth(), tk1.getNextHighestDepth(), {_x:xpos, _y:ypos});
 lingkaran.changeSize = size;
 lingkaran._width += 10*size;
 lingkaran._height += 10*size;
 lingkaran.onEnterFrame = function() {
  for (var ID in peluruHolder) {
   //jika peluru menabrak lingkaran
   if (this.hitTest(peluruHolder[ID]._x, peluruHolder[ID]._y, true)) {
    //ubah ukurannya menjadi lebih besar
    this.changeSize++;
    this._width += 10;
    this._height += 10;
    //hapus peluru yang menabrak
    peluruStage--
    peluruHolder[ID].removeMovieClip();
    //jika lingkaran sudah mencapai besar yang maksimal
    if (this._height>45 && this._height>45) {
     //tembakan empat peluru dan hapus lingkaran
     buatPeluru(this,1);
     buatPeluru(this,2);
     buatPeluru(this,3);
     buatPeluru(this,4);
     this.removeMovieClip();
    }
   }
  }
 
 };
 //jika lingkaran ditekan ketika tidak ada peluru distage
 lingkaran.onPress = function() {
  if (peluruStage == 0) {
   //ubah ukurannya menjadi lebih besar
   this.changeSize++;
   this._width += 10;
   this._height += 10;
   //jika lingkaran sudah mencapai besar yang maksimal
   if (this.changeSize>=4) {
    //tembakan empat peluru dan hapus lingkaran
    buatPeluru(this,1);
    buatPeluru(this,2);
    buatPeluru(this,3);
    buatPeluru(this,4);
    this.removeMovieClip();
   }
  }
 };
}
 
 
//untuk mengatur kecepatan gerak peluru
peluruSpeed = 5;
//untuk menampung peluru distage
_root.createEmptyMovieClip("peluruHolder",_root.getNextHighestDepth());
 
//fungsi untuk membuat peluru
function buatPeluru(target, type) {
 peluruStage++;
 var ID:Number = Math.random();
 //peluru keatas
 if (type == 1) {
  peluruHolder.attachMovie("peluru","peluru"+ID,peluruHolder.getNextHighestDepth(),{_x:target._x, _y:target._y});
  peluruHolder["peluru"+ID]._rotation = 90;
 }
 //peluru kekanan                              
 if (type == 2) {
  peluruHolder.attachMovie("peluru","peluru"+ID,peluruHolder.getNextHighestDepth(),{_x:target._x, _y:target._y});
 }
 //peluru kebawah                                 
 if (type == 3) {
  peluruHolder.attachMovie("peluru","peluru"+ID,peluruHolder.getNextHighestDepth(),{_x:target._x, _y:target._y});
  peluruHolder["peluru"+ID]._rotation = 90;
 }
 //peluru kekiri                                 
 if (type == 4) {
  peluruHolder.attachMovie("peluru","peluru"+ID,peluruHolder.getNextHighestDepth(),{_x:target._x, _y:target._y});
 }
 peluruHolder["peluru"+ID].onEnterFrame = function() {
  //gerakkan peluru berdasarkan type
  //bergerak keatas
  if (type == 1) {
   this._y -= peluruSpeed;
  }
  //bergerak kekanan
  if (type == 2) {
   this._x += peluruSpeed;
  }
  //bergerak kebawah
  if (type == 3) {
   this._y += peluruSpeed;
  }
  //bergerak kekiri 
  if (type == 4) {
   this._x -= peluruSpeed;
  }
  //hapus peluru jika keluar dari stage
  if (this._x<-50 || this._x>Stage.width+50 || this._y<-50 || this._y>Stage.height+50) {
   peluruStage--
   this.removeMovieClip();
  }
 };
}
 
//script untuk mengatur dan meletakan lingkaran distage
level = new Array();
level[0] = new Array(0, 0, 0, 0, 0, 3, 0);
level[1] = new Array(0, 1, 3, 1, 2, 2, 1);
level[2] = new Array(2, 2, 2, 0, 2, 2, 2);
level[3] = new Array(3, 2, 2, 1, 2, 2, 1);
level[4] = new Array(0, 2, 1, 0, 3, 3, 1);
level[5] = new Array(0, 2, 3, 1, 3, 1, 0);
level[6] = new Array(3, 0, 0, 3, 3, 1, 0);
//meletakan lingkaran berdasarkan level array
for (j=0; j<=6; j++) {
 for (i=0; i<=6; i++) {
  //lingkaran kecil
  if (level[j][i] == 1) {
   buatLingkaran(i*55+35,j*55+35,0);
  }
  //lingkaran sedang
  if (level[j][i] == 2) {
   buatLingkaran(i*55+35,j*55+35,2);
  }
  //lingkaran besar 
  if (level[j][i] == 3) {
   buatLingkaran(i*55+35,j*55+35,3);
  }
 }
}
12. Tekan Ctrl+Enter untuk melihat hasilnya.
Tekan lingkaran sampai pecah. Bisakan anda menghancurkan seluruh lingkaran dalam sekali tekan?

0 komentar: