12

Membuat Game Android dengan Flash Develop - … Game Android dengan Flash Develop A. Persiapan Software Untuk memulai proses pembuatan game dengan menggunakan Flash develop, anda

  • Upload
    vuque

  • View
    266

  • Download
    6

Embed Size (px)

Citation preview

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 [email protected]