Kamis, 22 Oktober 2009

Flash Lite Gaming Tutorial : Continuous KeyPress for Moving Characters in Side-Scrollers

Tindakan atau game berbasis petualangan mungkin membutuhkan karakter untuk bergerak di sekitar layar. Kami menggunakan Kunci Objek untuk berinteraksi dengan permainan karakter. Sementara tombol yang ditekan dan keyreleases merespon dengan cepat ketika file swf dijalankan pada desktop, acara ini bekerja secara berbeda untuk swfs berjalan pada mobile. Sebuah alasan yang sah adalah bahwa ponsel memiliki kecepatan pemrosesan yang lebih kecil sehingga membuatnya lebih lambat bagi mereka untuk mengenali tombol yang ditekan atau keyreleases sebelum menerapkan mereka.

Jadi, ketika Anda mencoba untuk memindahkan karakter dengan tombol ditekan, Anda akan melihat sedikit karakter jeda sebelum mulai bergerak. Sebuah solusi yang aku lebih sering digunakan adalah, membuat acara kali tombol ditekan berinteraksi dengan movieklip terisi.

(Either JavaScript tidak aktif atau anda menggunakan versi lama dari Adobe Flash Player. Silakan instal Flash Player terbaru.)

The Key Events
var keyList:Object = new Object();
var dir:Number = 0;
var keyDownState:Boolean = false;


Kita mulai dengan menyatakan 3 variabel --
Obyek keyList dari tipe untuk menerima pemberitahuan KeyDown dan KeyUp,
dir tipe Nomor untuk menyimpan arah karakter berdasarkan tombol ditekan
tipe keyDownState Boolean untuk mengecek apakah tombol yang ditekan ke bawah atau ke atas.

keyList.onKeyDown = function(){
if(not keyDownState){
var keyCode = Key.getCode();
if(keyCode == 37){
dir = -1;
}else if(keyCode == 39){
dir = 1;
}
keyMover.gotoAndPlay(2);
char.gotoAndPlay(2);
char._xscale = 100*dir;
keyDownState = true;
}
}


keyList.onKeyUp = function(){
dir = 0;
keyDownState = false;
char.gotoAndStop(1);
keyMover.gotoAndPlay(1);
}

Kode di atas menyatakan 2 peristiwa - The KeyDown kejadian dan peristiwa KeyUp.

Sebuah peristiwa KeyDown dijalankan ketika tombol ditekan. Acara ini menjalankan blok kode selama kunci tetap ditekan. Kode kita di sisi lain, menjalankan pernyataan hanya sekali dan tidak terus-menerus karena kondisi (jika tidak keyDownState) gagal untuk diakui sebagai palsu setelah yang pertama dijalankan. Alasan mengapa kami telah menetapkan kondisi ini, karena kita tidak ingin loop melalui kode yang sama beberapa kali untuk menekan tombol yang sama.

var keyCode = Key.getCode();

The getCode () method mengembalikan nilai kode tombol tombol terakhir ditekan. Berdasarkan nilai kembali, arah karakter ditetapkan. Kode ini akan memeriksa hanya 2 tombol - Tombol Kiri dan tombol Kanan. Menekan tombol lain diabaikan.
keyMover.gotoAndPlay(2);
char.gotoAndPlay(2);
char._xscale = 100*dir;


Jika anda melihat script di atas, di baris pertama keyMover mengacu pada movieklip dimuat di panggung yang berisi script untuk memindahkan karakter.

Baris kedua merujuk pada karakter movieklip. MC ini pada awalnya memiliki karakter dalam posisi berdiri pada frame 1. Ketika tombol ditekan karakter berpindah ke frame berikutnya yang telah ia menghidupkan.

Terakhir, kita perlu membalik karakter berdasarkan tombol ditekan. Jadi kita menggunakan properti _xscale untuk membalik karakter berdasarkan tombol ditekan.

Sebuah acara KeyUp disebut ketika tombol dilepaskan. Pada kode kita, semua variabel diatur ulang ke nilai asli mereka dan movieklip melanjutkan untuk menghentikan pada bingkai pertama dari garis waktu mereka pada saat acara yang KeyUp.

KeyMover Klip

KeyMover movieklip yang terdiri dari 3 frame

Frame 1
var mc:MovieClip = _root.char;
var dir:Number = 0;
var speed:Number = 3;
stop();


Bingkai pertama menetapkan variabel yang diperlukan dan juga set referensi ke movieklip karakter di atas panggung.

Frame 2
dir = _root.dir;
if(mc._x < style="color: rgb(51, 51, 255);">_width/2 and dir < dir =" 0;" style="color: rgb(51, 51, 255);">else if(mc._x > (Stage.width – mc._width/2) and dir > 0){
dir = 0;
}
mc._x += speed*dir;


Bingkai kedua menetapkan kondisi untuk memeriksa untuk melihat apakah karakter bergerak di luar area layar. Jika kondisi ini bertemu untuk benar maka arah diatur ke 0

Akhirnya karakter bergerak dengan nilai yang arah kecepatan X

Frame 3
gotoAndPlay(2);


Loop frame ketiga movieklip antara frame 2 dan 3.

The Final Run

Sekarang ketika Anda bermain ini di emulator atau perangkat karakter akan merespon dengan segera kepada keypressed tanpa jeda.

Tidak ada komentar:

Poskan Komentar