Anda di halaman 1dari 12

Membuat Game Android dengan Flash Develop

A. Persiapan Software
Untuk memulai proses pembuatan game dengan menggunakan Flash develop, anda
memerlukan beberapa software berikut :
1. Flash Develop
Flash Develop merupakan sebuah software opensource, code editor dan compiler yang
bisa kita gunakan untuk membuat aplikasi berbasis Flash.

2. Flex SDK dengan Air Runtime (Flex SDK 4.6)


Flex SDK diperlukan agar Flash Develop dapat mencompile kode Action Script menjadi
sebuah aplikasi. Flex SDK dapat di unduh di link
http://www.adobe.com/devnet/flex/flex-sdk-download.html

B. Persiapan Project
Untuk memulai membuat sebuah aplikasi Android berbasis Flash, diperlukan sedikit
persiapan berikut :
1. Pertama buatlah sebuah project baru dengan memilih menu Project> New Project.
Kemudian pilih opsi AIR Mobile AS3 App. Berikan nama project dan pilih folder tempat
bekerja.

2. Pada panel project klik kanan nama project dan anda pilih Project > Properties.

3. Selanjutnya atur project anda untuk Platform AIR Mobile 3.2. Untuk Dimension biarkan
ke ukuran default dan FPS minimal 30 fps

4. Setelah anda klik OK, pada folder src pada Project Panel double click file Main.as untuk
memunculkannya di code editor. File tersebut adalah class utama dari aplikasi yang akan
dibuat.
5. Siapkan beberapa gambar / asset visual yang akan dipergunakan dalam game, sebagai
contoh

6. Copy file asset visual ke dalam folder bin

C. Pembuatan Game Engine


Setelah persiapan asset selesai pada panel code editor ketikan kode berikut :
package
{
import flash.desktop.NativeApplication;
import flash.display.Bitmap;
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
import flash.sensors.Accelerometer;
import flash.events.AccelerometerEvent;
import flash.text.*;

/**
* ...
* @author wandah
*/
public class Main extends Sprite
{
[Embed(source = "../bin/arena.jpg")]
private var arena_bmp:Class;
[Embed(source = "../bin/ball_bmp.png")]
private var ball_bmp:Class;
[Embed(source = "../bin/board_1.png")]
private var board_1_bmp:Class;
[Embed(source = "../bin/board_2.png")]
private var board_2_bmp:Class;
[Embed(source = "../bin/goal_bmp.png")]

private var goal_bmp:Class;

private var game:MovieClip;


private var board_1:MovieClip;
private var board_2:MovieClip;
private var ball:MovieClip;

private var speed_x:Number = 0;


private var speed_y:Number = 0;
private var just_hit:Number = 0;
private var is_goal:Boolean = false;

private var score_1:Number = 0;


private var score_2:Number = 0;

private var score_1_txt:TextField;


private var score_2_txt:TextField;

private var is_left:Boolean = false;


private var is_right:Boolean = false;

private var my_acc:Accelerometer = new Accelerometer();

public function Main():void


{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.DEACTIVATE, deactivate);

// touch or gesture?
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

// entry point
setup();
my_acc.addEventListener(AccelerometerEvent.UPDATE,
onAccUpdate);
}

private function deactivate(e:Event):void


{
// auto-close
NativeApplication.nativeApplication.exit();
}

private function setup():void {


is_goal = false;

game = new MovieClip();


addChild(game);
var arena:Bitmap = new arena_bmp();
game.addChild(arena);
ball = new MovieClip();
var ball_bitmap:Bitmap = new ball_bmp();
ball_bitmap.x = -28;
ball_bitmap.y = -28;
ball.addChild(ball_bitmap);
ball.x = 240;
ball.y = 400;
game.addChild(ball);
board_1 = new MovieClip();
var board_bmp:Bitmap = new board_1_bmp();
board_bmp.x = -63;
board_bmp.y = -11;
board_1.addChild(board_bmp);
board_1.x = 240;

board_1.y = 650;
game.addChild(board_1);
board_2 = new MovieClip();
board_bmp = new board_2_bmp();
board_bmp.x = -63;
board_bmp.y = -11;
board_2.addChild(board_bmp);
board_2.x = 240;
board_2.y = 150;
game.addChild(board_2);
speed_x = Math.random() * 3+2;
speed_y = -20+Math.random()*10;

var myFormat:TextFormat = new TextFormat();


myFormat.size = 50;
myFormat.align = TextFormatAlign.CENTER;

score_1_txt = new TextField();


score_1_txt..defaultTextFormat = myFormat;
score_1_txt.width = 150;
score_1_txt.height = 60;
score_1_txt.x = 10;
score_1_txt.y = 410;
score_1_txt.text = String(score_1);
game.addChild(score_1_txt);

score_2_txt = new TextField();


score_2_txt..defaultTextFormat = myFormat;
score_2_txt.width = 150;
score_2_txt.height = 60;
score_2_txt.x = 10;
score_2_txt.y = 330;

score_2_txt.text = String(score_2);
game.addChild(score_2_txt);

game.addEventListener(Event.ENTER_FRAME, game_loop);

private function game_loop(e:Event):void {


if (!is_goal){
ball.x += speed_x;
ball.y += speed_y;
if (ball.y<30 || ball.y>770) speed_y*=-1;
if (ball.x<30 || ball.x>450) speed_x*=-1;

if (ball.hitTestObject(board_1) && just_hit == 0)


{
just_hit = 10;
speed_y *= -1;
}
if (ball.hitTestObject(board_2) && just_hit == 0)
{
just_hit = 10;
speed_y *= -1;
}

if (ball.x > 180 && ball.x < 300 ) {


if (ball.y < 35) {
is_goal = true;
just_hit = 100;
score_1++;
ball.visible = false;
}
if (ball.y > 765) {

is_goal = true;
just_hit = 100;
score_2++;
ball.visible = false;
}
}
//Player
if (board_1.x < 400 && is_right) board_1.x += 10;
if (board_1.x > 80 && is_left) board_1.x -= 10;
//AI
if (ball.y < 300 && speed_y < 0) {
if (board_2.x < ball.x && board_2.x < 400 )
board_2.x += 5;
if (board_2.x > ball.x && board_2.x > 80)
board_2.x -= 5;
}

if (just_hit > 0) just_hit--;


}else {
just_hit--;
if (just_hit == 90) {
var goal_bitmap:Bitmap = new goal_bmp();
goal_bitmap.x = 240-178;
goal_bitmap.y = 400-44;
game.addChild(goal_bitmap);
}
if (just_hit == 1) {
restart_game();
}
}
}

private function restart_game():void {

game.removeEventListener(Event.ENTER_FRAME, game_loop);

removeChild(game);
setup();
}

private function onAccUpdate(e:AccelerometerEvent):void {

if (e.accelerationX < 0) {
is_left = true;
is_right = false;
}
if (e.accelerationX > 0) {
is_left = false;
is_right = true;
}
}
}
}

D. Publishing ke Android
Setelah kode tersebut selesai ditulis, uji coba dengan menekan tombol Ctrl+Enter. Jika tidak
ada pesan error maka kita siap mempublishnya menjadi sebuah file aplikasi Android :
1. Pada project panel buka folder bat. Klik kanan pada file CreateCertificate.bat, kemudian
pilih menu execute. Langkah ini akan membuat file certificate p12 yang diperlukan untuk
publikasi file dan hanya perlu dilakukan sekali

2. Selanjutnya dengan cara yang sama pada project panel jalankan file PackageApp.bat.
Hal ini dimaksudkan untuk mengemas paket file (SWF, AIR Native, Certificate dan Icon)
menjadi sebuah file dengan format APK. Pilih opsi [3] untuk mengemas file dengan AIR
Runtime, sehingga file bisa dijalankan tanpa harus menginstall Adobe AIR terlebih
dahulu.

3. File APK siap diinstall di gadget atau dirilis lewat Google PlayStore

Terimakasih dan semoga bermanfaat


Informasi lebih lanjut ada di www.wandah.org atau email wandah@wandah.com

Anda mungkin juga menyukai