簡體   English   中英

從非活動類/項目開始活動

[英]Start Activity from non activity class/project

我一直在為Android開發游戲,但重要的是要知道到目前為止我沒有使用過一個Activity。 到目前為止,我的游戲運行良好,但是我想在某些設置中使用一項活動,因為這樣更容易更改。.我一直在閱讀一些類似的主題,但我尚未達到目的。 因此,我需要了解一下SettingsActivity的含義,就像在代碼中看到的那樣,在屏幕上輕按5,5,75,75即可。如我所說,我一直在閱讀一些類似的主題並使用代碼但是沒有用..謝謝你的幫助

public class MainMenuScreen extends Screen  {


    public MainMenuScreen(Game game) {
        super(game);
    }

    @Override
    public void update(float deltaTime) {
        Graphics g = game.getGraphics();

        List<TouchEvent> touchEvents = game.getInput().getTouchEvents();

        int len = touchEvents.size();
        for (int i = 0; i < len; i++) {
            TouchEvent event = touchEvents.get(i);
            if (event.type == TouchEvent.TOUCH_UP) {



                    if(inBounds(event,5,5,75,75)){

                        // Get an Intent to open the SettingsActivity


                    }if(inBounds(event,85,350,200,75)){

                        System.out.println("Start Last level");
                        if(SampleGame.progress==0)
                        Settings.currentLevel=0;

                        if(SampleGame.progress==1)
                            Settings.currentLevel=1;

                        if(SampleGame.progress==2)
                            Settings.currentLevel=2;

                        if(SampleGame.progress==3)
                            Settings.currentLevel=3;
                        if(SampleGame.progress==4)
                            Settings.currentLevel=4;

                        Settings.save(game.getFileIO());
                        GameScreen.state=GameState.Ready;

                        game.setScreen(new GameScreen(game));
                    }if(inBounds(event,500,350,275,75)){

                        game.setScreen(new LevelSelectionScreen(game));

                    }



                }



            }



    }

    private boolean inBounds(TouchEvent event, int x, int y, int width,
            int height) {
        if (event.x > x && event.x < x + width - 1 && event.y > y
                && event.y < y + height - 1)
            return true;
        else
            return false;
    }

    @Override
    public void paint(float deltaTime) {
        Graphics g = game.getGraphics();
        g.drawImage(Assets.menu, 0, 0);



    }

    @Override
    public void pause() {
    }

    @Override
    public void resume() {

    }

    @Override
    public void dispose() {

    }

    @Override
    public void backButton() {
        android.os.Process.killProcess(android.os.Process.myPid());

    }
}

從代碼中,我可以看到您正在關注《 Beginning Android Games 》一書。 這種方法(帶有“屏幕”的單個活動)確實非常適合游戲開發。

如果您確實想添加額外的活動,則最好在實現主要活動的GameAndroidGame )類內實現其開始/處理。

為此,您可以在其中添加一個newActivity方法(與setScreen方法位於同一位置)。 它的參數可以根據您的需要而變化:您可以直接傳遞Intent ,也可以傳遞Class 這完全取決於您在重用框架時需要多少自由度。

這是您可以添加的基本示例:

public abstract class AndroidGame extends Activity implements Game {

   public void newActivity(Intent intent)  {
      startActivity( intent ); 
   }

   public void newActivity(Class<?> cls)  {
      startActivity( new Intent( this, cls ) );
   }
}

這只是實現目標的兩種方法,而且都是非常基本的。 請查看活動意圖文檔,以了解啟動活動的各種方式。 另外,如果您想從活動中接收信息,則可以使用startActivityForResult並在Game類中實現onActivityResult (也許可以選擇存儲最后一個結果,以便游戲可以處理它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM