0

libgdx を使用してゲームを開発しています。リソースは AssetManager で管理されます。

Libgdxに示されているように、テクスチャなどのマネージド OpenGL リソースを再読み込みする必要があります。

そのため、私の ApplicationListener # resume () メソッドで、ロード画面に切り替えて AssetManager # update () を再度呼び出します。

現在、いくつかの広告を実装しています。

私が抱えている問題は、インタースティシャル広告を表示する場合です。この広告を閉じてゲームに戻ると、再びロード画面が表示されて時間がかかります。

(このガイドに従って、Ads を Libgdx Android コードに統合しました: Libgdx ads )

何か案は?ありがとう!!

これは私のコードです:

public class MyGame extends Game implements InputProcessor {    

public Assets assets;
public SpriteBatch sb;
public Screen ScrSplash;
public Screen ScrLoading;
public Screen ScrMainMenu;  

public IActivityRequestHandler myRequestHandler;        

public GamPrincipal(IActivityRequestHandler handler) {  
    myRequestHandler = handler;
}   

@Override
public void create() {      
    sb = new SpriteBatch();
    ScrSplash       = new ScrSplash(this, sb);
    ScrLoading      = new ScrLoading(this, sb);
    ScrMainMenu     = new ScrMainMenu (this, sb);
    assets = new Assets();      
    setScreen(ScrSplash);
}

//====

public class ScrMyScreen implements Screen, InputProcessor{

private MyGame game;    
private OrthographicCamera camara;
private SpriteBatch sb;             
private Sprite sprBackground;
//…more…//

public ScrMyScreen(MyGame game, SpriteBatch sb) {       
    this.game = game;
    this.sb = sb;
}   

@Override
public void render(float delta) {       
      sb.begin();    
        sprBackground.draw(sb);
            /// 
                //…more…//
    sb.end();
}   


@Override
public void resize(int width, int height) { 
}

@Override
public void show() {            
    sprFondo             = game.assets.sprBackground;
    sprLblTitle          = game.assets.sprTitle;
        //…more…//


    //**************Show Ads*******************
    game.myRequestHandler.showAds(true);
}

@Override
public void hide() {
    dispose();
}

@Override
public void pause() {       
}

@Override
public void resume() {
    //Show loading screen   
    game.setScreen(game.ScrLoading);        
}

@Override
public void dispose() {
    //Call Dispose assets method
}

//===

public class ScrLoading implements Screen {

private MyGame game;
private Sprite sprBG;
private OrthographicCamera camera;
private SpriteBatch sb;
//… 

public ScrLoading(GamPrincipal juego, SpriteBatch sb) {     
    this.game = game;
    this.sb = sb;   
}   

@Override
public void render(float delta) { 

    if(Recursos.manager.update()) { 
            game.setScreen(game. ScrMyScreen); 
    }       

   sb.begin();     
        sprBG.draw(sb);
    //…more… (draw text : “loading…”  )  
        //  
   sb.end();

}

@Override
public void resize(int width, int height) {
}

@Override
public void show() {        
    texture = new Texture("data/images/bg.png");    
    sprBG = new Sprite (texture);
    Assets.manager.update();
}

@Override
public void hide() {
    dispose();
}

@Override
public void pause() {
}

@Override
public void resume() {
}

@Override
public void dispose() {
    //Call Dispose assets method
}
4

1 に答える 1

0

AssetManager を使用している場合、アセットをリロードする必要はありません。それらを自動的にキャッシュします。したがって、履歴書のその行を削除してください。

于 2013-06-16T04:11:20.407 に答える