当前位置: 首页 > 知识库问答 >
问题:

如何在更换屏幕项目Libgdx中添加间隙广告

弓晔
2023-03-14

我看过很多关于如何在libgdx中添加插入式广告的教程。但它们都使用构造函数传递接口。

我已经创建了我的改变屏幕的游戏。我的类是:(在AndroidLauncher:Initialize(newgamechanger(),config)中)

游戏改变者扩展游戏。。。(设置屏幕主菜单)----

实现屏幕的主菜单,并具有传入Gamechanger的构造函数。。。(设置屏幕MyGDXGame)--

MyGDXGame,实现屏幕和构造函数,通过Gamechanger-

(我需要在MyGdxGame和end之间显示广告)

结束实现屏幕,并在Gamechanger中传递构造函数

有没有一种方法可以不使用构造器在两个屏幕之间添加广告,或者有其他方法?

请回应?抱歉,任何代码和语法错误。谢啦

这是我的Android启动器:

公共类Android启动器扩展Android应用{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
    initialize(new Gamekeeper(),config);
}

}

这是我的GameKeeper类,它扩展了游戏:公共类GameKeeper扩展了游戏{

public SpriteBatch batch;

@Override
public void create(){
    batch = new SpriteBatch();
    this.setScreen(new MainMenu(this));
}
@Override
public void render(){
    super.render();
}
@Override
public void dispose(){
    batch.dispose();
}

}

这是我的主菜单类,它实现了屏幕:

protected MainMenu(Gamekeeper gam) {
    game = gam;
batch = new SpriteBatch();
Gdx.input.setInputProcessor(this);

}

public void render(float delta) {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.begin();
    backgroundSound.setLooping(true);
    backgroundSound.play();
    backgroundSprite.draw(batch);
    titleFont.draw(batch, title, playButton.getX(), Gdx.graphics.getHeight() - 100);
    scoreFont.draw(batch, "Top Score: " + score, Gdx.graphics.getWidth() / 3 - 20, Gdx.graphics.getHeight() / 2 + 30);
    playButton.draw(batch);
    batch.end();
}

public boolean touchUp(int screenX, int screenY, int pointer, int button) {
    if(play.contains(screenX,screenY)){
       buttonClick.play();
        backgroundSound.stop();
        mainTheme.setLooping(true);
        mainTheme.play();
       play.setPosition(-500,-500);
       game.setScreen(new MyGdxGame(game));
    }
    return true;
}

其他的班级大多是相似的

共有1个答案

申查猛
2023-03-14

通过实现接口添加初始广告不是问题。在核心项目文件夹中创建接口文件。

public interface PlayServices
{
....//some other playservices methods;
public void showOrLoadInterstital();
}

在AdnRoid启动器中。java类实现创建的PlayServices接口。

public class AndroidLauncher extends AndroidApplication implements PlayServices {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();

    adView = new InterstitialAd(this);
    adView.setAdUnitId(YOUR ID OF ADMOB);
    adView.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
           //all of these toasts added for the debug reason, after successfully
           //implementing method you can remove them
           Toast.makeText(getApplicationContext(), "Finished Loading Interstitial", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onAdClosed() {
            Toast.makeText(getApplicationContext(), "Closed Interstitial", Toast.LENGTH_SHORT).show();
        }
    });

    requestNewInterstitial();

    initialize(new Gamekeeper(this),config);
}

@Override
public void showOrLoadInterstital() {
    try {
        runOnUiThread(new Runnable() {
            public void run() {

                if (adView.isLoaded()) {
                    adView.show();
                    requestNewInterstitial();
                    Toast.makeText(getApplicationContext(), "Showing Interstitial", Toast.LENGTH_SHORT).show();
                } else {
                    AdRequest interstitialRequest = new AdRequest.Builder().build();
                    adView.loadAd(interstitialRequest);
                    Toast.makeText(getApplicationContext(), "Loading Interstitial", Toast.LENGTH_SHORT).show();
                }

            }
        });
    } catch (Exception e) {
    }
}

}

然后在你的核心java文件中,你需要处理PlayServices。

public class Gamekeeper extends Game{
    public static PlayServices playServices;

    public Gamekeeper (PlayServices playServices){
        this.playServices = playServices;
    }
}

因此,在您的游戏中,无论何时您想要调用广告,请使用以下命令:

Gamekeeper.playServices.showOrLoadInterstital();

就这些。只是别忘了做些适当的事情:

1.下载Google Play服务。

2.包括并参考Google Play服务库项目。

3.修改清单。

 类似资料:
  • 问题内容: 大家好,我仍在从事这个libgdx项目的工作,我试图找出将屏幕切换到游戏屏幕的最佳方法。现在,当单击一个按钮时,我需要它来切换到游戏屏幕。我已经看到了一些扩展游戏类的实现方式,但是我不确定这里最好的方法是什么。如果您看到一些可以改进的代码,请告诉我。 这是主要的应用程序类: 问题答案: 这就是我始终执行屏幕切换的方式: 首先,主类需要扩展Game(From ),然后您需要具有一个新的t

  • 大家好,我仍然在做这个libgdx项目,我正在努力找出最好的方法来改变我的游戏屏幕现在,当一个按钮被点击时,我需要它转换到游戏屏幕。我见过一些扩展game类的实现,但我不确定从这里开始最好的方法是什么。如果你看到一些可以改进的代码,请让我知道。 以下是主要的应用程序类:

  • 我试图改变Libgdx屏幕之间的动画。我想写我的自定义动画(淡入淡出等)。有人能给我个线索吗?我似乎在Libgdx代码中找不到转换的实现。

  • 在libGDX中切换屏幕似乎有问题。它会切换到游戏屏幕,但不会切换回主屏幕,也不会切换到屏幕上的游戏。我的游戏课: 我的GameScreen类(实现屏幕): 这就是我如何更改屏幕(不工作): 你可以在这里找到全部来源。

  • 我的应用程序不能显示间质。如果我使用测试设备ID运行应用程序,它会显示谷歌的间质测试窗口。但是没有测试设备ID,它什么也不会显示。我做了相同的步骤,比如整合smart_banner。我的应用程序显示smart_banner,但没有显示间质。可能我使用了错误的类......也存在间质类,但我使用了AdView类。我不知道有人知道在libgdx中包含间质的好教程吗?

  • 我有以下项目:https://github.com/glusk2/sprouts 我尝试将添加到根目录文件中的整个项目中,如下所示: