Trò chơi LibGDX vs ApplicationAd CHƯƠNG


12

Khi tôi tạo một dự án LibGDX mới, lớp chính của dự án Core sẽ mở rộng ApplicationAd CHƯƠNG . Đây là cách nó trông như thế nào.

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

    }
}

Vì vậy, tôi phải thay đổi ApplicationAd CHƯƠNG thành Trò chơi nếu tôi muốn gọi phương thức setScreen để chuyển giữa các Màn hình. Vậy việc sử dụng ApplicationAd CHƯƠNG là gì? Khi nào tôi sẽ sử dụng nó?

Câu trả lời:


7

Như @ user3068350 đã nói, cả Game và ApplicationAd CHƯƠNG đều triển khai ApplicationListener. Thật hữu ích khi mở rộng Trò chơi nếu bạn dự định sử dụng giao diện Màn hình trong trò chơi của mình, tuy nhiên một số nhà phát triển có thể muốn thực hiện một cách tiếp cận khác và xử lý việc quản lý màn hình theo cách riêng của họ. Nếu đây là trường hợp, chúng sẽ mở rộng ApplicationAd CHƯƠNG.

Cá nhân, tôi thích các lớp của mình thực hiện giao diện Cập nhật và / hoặc Drawable tùy chỉnh, khi tôi tách phương thức kết xuất của mình thành cập nhật và vẽ. Trong trường hợp này, sử dụng Màn hình sẽ đánh bại mục đích vì giao diện chứa phương thức kết xuất.


1

Lớp Game thực hiện giao diện ApplicationListener và chỉ là một lớp được thiết kế để giúp dễ dàng chuyển đổi giữa các màn hình khác nhau. Khi một phương thức trong ApplicationListener được gọi, lớp Game sẽ đảm nhiệm việc ủy ​​thác nó cho màn hình hiện được đặt.


1
Nhưng khi nào tôi nên sử dụng ApplicationAd CHƯƠNG? Và làm thế nào tôi nên sử dụng màn hình ở đây.
Vahe Muradyan 04/07/2015

2
Bạn không cần sử dụng ApplicationAd CHƯƠNG. Cả ApplicationAd CHƯƠNG và Game đều thực hiện giao diện ApplicationListener. Một lớp bộ điều hợp chỉ là một lớp cung cấp các triển khai bộ xương cho một giao diện để bạn không phải làm lộn xộn mã của mình với các thân phương thức trống. Để sử dụng màn hình với Trò chơi, bạn gọi setScreen và chuyển qua một lớp thực hiện giao diện Màn hình. Bạn có thể làm cho các lớp màn hình của bạn lấy một đối tượng Trò chơi trong hàm tạo để bạn có thể thay đổi màn hình trong một màn hình.
dùng3068350

1
vậy tại sao họ đã tạo ApplicationAd CHƯƠNG nếu nó không được sử dụng?
Vahe Muradyan

2
@VaheMuradyan, người dùng đã trả lời rằng: bạn không cần phải làm lộn xộn mã của mình với các thân phương thức trống. Khi bạn triển khai ApplicationListenertrực tiếp, bạn phải cung cấp tất cả các phương thức cần thiết, bao gồm cả những phương pháp mà bạn không cần (như pause()hoặc resume()không luôn được sử dụng). ApplicationAdapterlà để thuận tiện cho bạn, vì vậy bạn không cần phải giữ các phương thức trống xung quanh. Đây là một lớp tiện ích đơn giản, nó không thêm chức năng mới - nó chỉ giữ cho mã của bạn sạch hơn (hoặc ngắn hơn ).
JustAClulessNewbie

1

Khi lớp ApplicationAd CHƯƠNG và lớp Trò chơi triển khai giao diện ApplicationListener, cả hai có thể được sử dụng gần như thay thế cho nhau khi tạo trò chơi của bạn. Nếu bạn được thiết lập bằng cách sử dụng Màn hình, không có gì ngăn bạn thực hiện chúng với cả hai tùy chọn.

Lớp Trò chơi có thêm một chút chi phí sử dụng Màn hình. Tuy nhiên, chi phí chung này được thiết kế để giúp thực hiện các giai đoạn / cấp độ khác nhau trong trò chơi của bạn dễ dàng hơn. Điều quan trọng cần lưu ý là chi phí này là tối thiểu.

Các ApplicationAdapter không có chi phí bổ sung (nó là một thực hiện thẳng của một ApplicationListener). Điều này cho phép bạn kiểm soát nhiều hơn khi bạn phải tự làm mọi thứ. Cá nhân, tôi thích sử dụng ApplicationAd chương.

TL; DR: Không có sự khác biệt thực sự giữa chúng. ApplicationAd CHƯƠNG cung cấp cho bạn thêm một chút quyền kiểm soát & Trò chơi hoạt động ít hơn một chút.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.