LibGDX Game vs ApplicationAdapter


12

Yeni bir LibGDX projesi oluşturduğumda Core projesinin ana sınıfı ApplicationAdapter öğesini genişletir . İşte böyle görünüyor.

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);

    }
}

Ben değiştirmek zorunda Yani ApplicationAdapter için Oyun Ben Ekranlar arasında geçiş amacıyla setScreen yöntemi çağırmak istiyorum. Peki ApplicationAdapter kullanımı nedir? Ne zaman kullanmalıyım?

Yanıtlar:


7

@ User3068350'nin dediği gibi, hem Game hem de ApplicationAdapter ApplicationListener'ı uygular. Oyunda Ekran arayüzünü kullanmayı planlıyorsanız Oyunu genişletmek yararlıdır, ancak bazı geliştiriciler farklı bir yaklaşım benimsemek ve ekran yönetimini kendi yollarıyla ele almak isteyebilir. Bu durumda, bunlar ApplicationAdapter öğesini genişletir.

Şahsen, render yöntemimi güncelleme ve çizime ayırırken sınıflarımın özel bir Güncellenebilir ve / veya Çekilebilir arabirim uygulamasını seviyorum. Bu durumda, arabirim bir oluşturma yöntemi içerdiğinden, Screen'i kullanmak amacı yener.


1

Game sınıfı, ApplicationListener arabirimini uygular ve yalnızca farklı ekranlar arasında geçiş yapmayı kolaylaştıracak şekilde tasarlanmış bir sınıftır. ApplicationListener'daki bir yöntem çağrıldığında, Game sınıfı o anda ayarlanmış olan ekrana yetki vermeyi sağlar.


1
ama ne zaman ApplicationAdapter kullanmalıyım? Ve burada ekranları nasıl kullanmalıyım.
Vahe Muradyan

2
ApplicationAdapter kullanmanıza gerek yoktur. Hem ApplicationAdapter hem de Game, ApplicationListener arabirimini uygular. Bağdaştırıcı sınıfı yalnızca bir arabirim için iskelet uygulamaları sağlayan bir sınıftır, böylece kodunuzu boş yöntem gövdeleriyle karıştırmanız gerekmez. Game ile ekranları kullanmak için setScreen'i çağırır ve Screen arabirimini uygulayan bir sınıfa geçersiniz. Ekran sınıflarınızın yapıcıdaki bir Game nesnesini almasını sağlayabilirsiniz, böylece ekran içindeki ekranları değiştirebilirsiniz.
user3068350

1
Peki neden bir faydası yoksa ApplicationAdapter oluşturdular?
Vahe Muradyan

2
@VaheMuradyan, kullanıcı zaten yanıtladı: boş yöntem gövdeleri ile kodunuzu karıştırmanız gerekmez. ApplicationListenerDoğrudan uyguladığınızda , ihtiyacınız olmayanlar ( her zaman kullanılmayan pause()veya beğenilmeyen) dahil olmak üzere gerekli tüm yöntemleri sağlamanız gerekir resume(). ApplicationAdaptersize kolaylık sağlamak için orada, bu yüzden boş yöntemler tutmak zorunda değilsiniz. Basit bir yardımcı program sınıfıdır, yeni işlevler eklemez - kodunuzu daha temiz (veya daha kısa ) tutar .
JustACluelessNewbie

1

ApplicationAdapter ve Game sınıfı ApplicationListener arabirimini uygularken, ikisi de oyununuzu oluştururken neredeyse birbirinin yerine kullanılabilir. Ekranı kullanmaya ayarlıysanız, her iki seçenekle bunları uygulamanızı engelleyen hiçbir şey yoktur.

Oyun sınıfı o Ekranlar kullandıklarında daha havai bir az şey vardır. Ancak, bu ek yük, oyununuza farklı aşamaları / seviyeleri uygulamayı kolaylaştırmak için tasarlanmıştır. Bu ek yükün minimum düzeyde olduğuna dikkat etmek önemlidir.

ApplicationAdapter hiçbir ek yükü (bir ApplicationListener bir düz uygulamasıdır) sahiptir. Bu, her şeyi kendiniz yapmanız gerektiği için size daha fazla kontrol sağlar. Şahsen ben ApplicationAdapters kullanmayı tercih ediyorum.

TL; DR: Aralarında gerçek bir fark yok. ApplicationAdapter size biraz daha fazla kontrol verir ve Oyun biraz daha az iş.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.