2

I have Loading\Logo screen and MainMenu screen in my LibGDX game. And I want to show an interstitial ad between these screens.

I have managed to do this with the following code, but the problem is: after logo screen disappears, main menu screen appears for a short second and only then ad is shown - this is what annoys me.

I want logo screen to hide, then ad to be shown and only then main menu screen to appear (black screens are ok in between). Can you advise me how to get there?

My code now is as follows:

Main class just launches logo screen:

public class Colorem extends Game {

        //...   

    IActivityRequestHandler h_AndroidActivity;

    public void create() {  

    //init vars...

        //set logo screen
        this.setScreen(new LogoScreen(this));
    }

        //...   
}

Logo screen loads textures using AssetManager and load main menu screen:

public class LogoScreen implements Screen {
    private boolean bLoading = false,
            bLoadingFinished = false;

    public LogoScreen(final Colorem game) {
        this.game = game;

        // ...

    }


    @Override
    public void render(float delta) {

        //draw logo...

            //keep loading the resources calling assetManager.update()
            if(UI.assetManager.update()) {


                game.setScreen(new MainMenuScreen(game));


           }
        }

    }

Main menu class shows Ad when shown:

public class MainMenuScreen implements Screen {

 //...

        @Override
    public void show() {    
            game.h_AndroidActivity.showInterstitialAd_InGame();
    }


}

I have also tried calling Ad from hide() method of LogoScreen, but still I cannot get clean screen ->Ad -> screen slideshow.

4

1 回答 1

1

好吧。您需要在 MainActivity 中实现 AdListener
public class MainActivity extends AndroidApplication implements AdListener
这将为您提供5种方法

@Override
public void onDismissScreen(Ad arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
    // TODO Auto-generated method stub

}

@Override
public void onLeaveApplication(Ad arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onPresentScreen(Ad arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onReceiveAd(Ad arg0) {
    // TODO Auto-generated method stub

}

当所有资产都加载到您的 LogoScreen 时,显示您的 InterstitialAdd。现在在上面显示的方法中显示您的 MainMenuScreen onDismissScreen(Ad arg0)。另外请记住将listner添加到您的插页式广告中添加interstitial.setAdListener(this);

Incasegame.setScreen(new MainMenuScreen(game));在内部不起作用,onDismissScreen(Ad arg0)那么您需要获取一个布尔值并在调用 onDismissScreen() 时使用它来显示 mainmenuScreen()。

于 2014-03-10T04:34:39.027 回答