2015-03-19 115 views
1

我曾尝试使用本教程:libGDX吐司消息

http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=484#p2959

首先宣布private Toast render_toast = new Toast(7, 6);

之后的推杆render_toast.toaster();渲染。

我想在展会上使用它,所以我把这个show()

render_toast.makeText("Game start", "font", Toast.COLOR_PREF.BLUE, Toast.STYLE.ROUND, Toast.TEXT_POS.middle_right, Toast.TEXT_POS.middle_down, Toast.MED);

它不工作,没有给出错误信息,只能停止我的应用程序。

回答

3

在游戏中为所需方法创建一个接口。使用libgdx处理程序在您的AndroidLauncher类中实现此方法。您可以在游戏中的任何位置为Android相关用户界面调用这些方法。

您可以按照这个视频的细节,

https://www.youtube.com/watch?v=XxiT3pkIiDQ

这是怎么样,我用它在我的比赛。

//Defining interface for customized methods 
public interface AndroidInterfaces { 

    public void toast(final String t); 

} 

//implementing the interface in android launcer 
public class AndroidLauncher extends AndroidApplication implements AndroidInterfaces{ 

    final AndroidLauncher context=this; 
    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();  
     //if (Gdx.input.isPeripheralAvailable(Peripheral.Compass)) 
      cfg.useCompass = true; 
      //cfg.useAccelerometer=true; 
     initialize(new MyGame(this), cfg); 
    } 

    @Override 
    public void toast(final String t) { 
     handler.post(new Runnable() 
     { 

      @Override 
      public void run() { 
       //System.out.println("toatsing in launcher run"); 
       Toast.makeText(context, t, Toast.LENGTH_SHORT).show(); 

      } 

     }); 

    } 
} 


public class MyGame extends Game{ 
    //16012016 
    //16012016 for toast 
     AndroidInterfaces aoi; 

     public MyGame(AndroidInterfaces maoi) 
     { 
      aoi=maoi; 
     } 
     public MyGame() 
     { 

     } 
     public boolean backpressed=false; //Universal flag to check back button press status , across screens. 
     ..... 
     ..... 
} 



public class MainMenuScreen implements Screen{ 

    MyGame game; 
    float x,y,w,h,pw,gap; 
    float x1,y1; //coordinates for animation 
    //16012016 
    boolean toast=false; 
    float toasttimer=0; 

    public MainMenuScreen(MyGame gg) { 
     game = gg; 
    } 

    @Override 
    public void render(float delta) {   
     //16012016 
       if(toast) 
       { 
        toasttimer=toasttimer+delta; 
       } 
       ..... 
       ...//omitted 
      //16012016:Toast 
      if(toast) 
      { 
       if(toasttimer> 2.5) 
        Gdx.app.exit(); 
       else if (Gdx.input.isKeyJustPressed(Keys.BACK)) //For double back press exit effect. 
        Gdx.app.exit(); 
      } 
      else if (Gdx.input.justTouched()) { 
      game.setScreen(game.STS); //Setting another screen 
     }  
     //16012016 
      else if (Gdx.input.isKeyJustPressed(Keys.BACK)) 
      if(!game.backpressed) 
       { 
       if(!toast) 
       { 
        toast=true; //if bsck button is just pressed in current screen then toasting.. 
        game.aoi.toast("EXITING.THANKS FOR PLAYING!"); //Not relevant to desktop project, calling implemented method in androind launcher 
       }  
       } 
                } 
     else if(game.backpressed) 
     { 
      game.backpressed=false; 
     } 
    } 

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

    @Override 
    public void show() { 
     //16012016 
       toasttimer=0; 
       toast=false; 
       Gdx.graphics.setContinuousRendering(true); 
    } 

    @Override 
    public void hide() { 
     Gdx.input.setInputProcessor(null); 
    } 

    @Override 
    public void pause() { 
    } 

    @Override 
    public void resume() { 
    } 

    @Override 
    public void dispose() { 
    } 
} 
+0

一些英语教程会更大。 – plaidshirt 2016-01-17 21:11:27

+1

静音并关注.. – kingAm 2016-01-19 07:10:35

2

我为我的项目实施了类似Android的敬酒,并决定与您分享!享受:Toast LibGDX (GitHub)