2015-12-31 39 views
0

我曾瀏覽過許多關於如何將插頁式廣告添加到libgdx的教程。但是他們都使用通過接口傳遞的構造函數。如何在更改屏幕項目中添加插頁式廣告Libgdx

我已經創建了我的遊戲,它改變了屏幕。 我的類別是: (在AndroidLauncher:初始化(新的GameChanger(),配置))

的GameChanger擴展遊戲...(setscreen MAINMENU)---->

MAINMENU實現屏幕,並具有構造即傳中的GameChanger ...(setscreen MyGDXGame) - >

MyGDXGame實現屏幕,並具有構造函數傳遞的GameChanger - > ...(setscreen完)

(我需要顯示廣告這裏介於MyGdxGame和End之間)

末實現屏幕,並具有構造函數傳遞的GameChanger

有沒有辦法不使用構造 還是有不同的方式將兩個屏幕之間的廣告?

請回應? 對不起,任何代碼和語法錯誤。 感謝

這是我AndroidLauncher:

公共類AndroidLauncher擴展AndroidApplication {

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

}

這是我的獵場看守人的類,它擴展遊戲: 公共類獵場看守擴展遊戲{

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

}

這是我的MainMenu類,它實現了屏幕:

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

其他類大多是類似

+0

請發佈更多您的代碼,並且您還可以編輯您的帖子以更新您的代碼格式。 – Clay

+0

笏類型更多的代碼你需要?例如。 Android啓動器代碼或類代碼。 –

+0

什麼,這將有助於我們幫助您 – Clay

回答

0

它不是一個問題補充插頁廣告通過實現接口。在你的核心項目文件夾中創建接口文件。

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

in AdnroidLauncher.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核心文件的youre需要處理PlayServices。

public class Gamekeeper extends Game{ 
    public static PlayServices playServices; 

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

所以在您選擇的遊戲,只要你要撥打的廣告中使用此:

Gamekeeper.playServices.showOrLoadInterstital(); 

這就是所有。 只是不要忘了讓一些proper thing

1.下載谷歌播放服務。

2.包括並參考Google Play服務庫項目。

3.修改清單。

相關問題