LibGDX Game vs ApplicationAdapter


12

Ketika saya membuat proyek LibGDX baru kelas utama proyek Core memperluas ApplicationAdapter . Berikut ini tampilannya.

package com.marimba.apptest;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;

public class AppMain extends ApplicationAdapter {   
    @Override
    public void create () {

    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    }
}

Jadi saya harus mengubah ApplicationAdapter ke Game jika saya ingin memanggil metode setScreen untuk beralih di antara Layar. Jadi apa gunanya ApplicationAdapter ? Kapan saya harus menggunakannya?

Jawaban:


7

Seperti yang dikatakan @ user3068350, Game dan ApplicationAdapter mengimplementasikan ApplicationListener. Ini berguna untuk memperpanjang Game jika Anda berencana untuk menggunakan antarmuka Layar di game Anda, namun beberapa pengembang mungkin ingin mengambil pendekatan yang berbeda dan menangani manajemen layar dengan caranya sendiri. Jika demikian, ini akan memperpanjang ApplicationAdapter.

Secara pribadi, saya suka kelas saya untuk mengimplementasikan antarmuka yang dapat diperbarui dan / atau Drawable kustom, karena saya memisahkan metode render saya menjadi pembaruan dan menggambar. Dalam hal ini, menggunakan Layar akan mengalahkan tujuan karena antarmuka berisi metode render.


1

Kelas Game mengimplementasikan antarmuka ApplicationListener dan hanya kelas yang dirancang untuk membuatnya mudah untuk beralih di antara layar yang berbeda. Ketika sebuah metode di ApplicationListener dipanggil, kelas Game akan mengatur pendelegasiannya ke layar yang saat ini ditetapkan.


1
tetapi kapan saya harus menggunakan ApplicationAdapter? Dan bagaimana saya harus menggunakan layar di sini.
Vahe Muradyan

2
Anda tidak perlu menggunakan ApplicationAdapter. ApplicationAdapter dan Game mengimplementasikan antarmuka ApplicationListener. Kelas adaptor hanyalah kelas yang menyediakan implementasi kerangka untuk antarmuka sehingga Anda tidak perlu mengacaukan kode Anda dengan badan metode kosong. Untuk menggunakan layar dengan Game, Anda memanggil setScreen dan lulus di kelas yang mengimplementasikan antarmuka layar. Anda dapat membuat kelas layar mengambil objek Game di konstruktor sehingga Anda dapat mengubah layar di dalam layar.
user3068350

1
jadi mengapa mereka telah membuat ApplicationAdapter jika tidak ada gunanya?
Vahe Muradyan

2
@VaheMuradyan, pengguna sudah menjawab bahwa: Anda tidak perlu mengacaukan kode Anda dengan badan metode kosong. Ketika Anda menerapkan ApplicationListenersecara langsung, Anda harus memberikan semua metode yang diperlukan, termasuk yang tidak Anda butuhkan (suka pause()atau resume()yang tidak selalu digunakan). ApplicationAdapterada di luar sana untuk kenyamanan Anda, jadi Anda tidak perlu menyimpan metode kosong di sekitar. Ini adalah kelas utilitas yang sederhana, tidak menambahkan fungsi baru - hanya membuat kode Anda lebih bersih (atau lebih pendek ).
JustACluelessNewbie

1

Saat ApplicationAdapter dan kelas Game mengimplementasikan antarmuka ApplicationListener, keduanya dapat digunakan hampir secara bergantian saat membuat game Anda. Jika Anda disetel menggunakan Layar, tidak ada yang menghentikan Anda dari mengimplementasikannya dengan kedua opsi.

Kelas Game memiliki overhead yang lebih sedikit dengan menggunakan Layar. Namun, overhead ini dirancang untuk membuatnya lebih mudah untuk mengimplementasikan berbagai tahapan / level dalam gim Anda. Penting untuk dicatat bahwa overhead ini minimal.

The ApplicationAdapter tidak memiliki overhead tambahan (itu adalah implementasi langsung dari ApplicationListener). Ini memberi Anda lebih banyak kontrol karena Anda harus melakukan semuanya sendiri. Secara pribadi, saya lebih suka menggunakan ApplicationAdapters.

TL; DR: Tidak ada perbedaan nyata di antara mereka. ApplicationAdapter memberi Anda sedikit lebih banyak kontrol & Permainan sedikit kurang berhasil.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.