Java 从非活动类/项目开始活动

Java 从非活动类/项目开始活动,java,android-intent,android-activity,2d-games,Java,Android Intent,Android Activity,2d Games,我一直在为android开发一款游戏,但知道我到现在为止没有使用过一个活动是非常重要的。到目前为止,我的游戏运行得很好,但我想在一些设置中使用一个活动,因为这样更容易更改。。我一直在读一些类似的话题,但我还没有达到我的目的。因此,我需要从屏幕上点击5,5,75,75的范围内获得设置活动的意图,正如您在代码中看到的。。正如我所说,我已经阅读了一些类似的主题,并使用了代码,但它没有起作用。。谢谢你的帮助 public class MainMenuScreen extends Screen {

我一直在为android开发一款游戏,但知道我到现在为止没有使用过一个活动是非常重要的。到目前为止,我的游戏运行得很好,但我想在一些设置中使用一个活动,因为这样更容易更改。。我一直在读一些类似的话题,但我还没有达到我的目的。因此,我需要从屏幕上点击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());

    }
}
public类主菜单屏幕扩展{
公共主菜单屏幕(游戏){
超级(游戏);
}
@凌驾
公共无效更新(浮动增量时间){
Graphics g=game.getGraphics();
List touchEvents=game.getInput().getTouchEvents();
int len=touchEvents.size();
对于(int i=0;ix&&event.xy
&&事件y
从代码中我可以看出,您正在阅读《开始Android游戏》一书。这种方法(带有“屏幕”的单个活动)确实对游戏开发非常有用

如果您确实想添加额外的活动,最好在实现主活动的
Game
AndroidGame
)类中实现它们的启动/处理

为此,您可以在其中添加一个
newActivity
方法(与
setScreen
方法位于同一位置)。它的参数可以根据您的需要而变化:您可以直接传递,也可以传递。这完全取决于重新使用框架时需要多少自由度

以下是您可以添加内容的基本示例:

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 ) );
   }
}
公共抽象类AndroidGame扩展活动实现游戏{
公共活动(意向){
星触觉(意向);
}
公共活动(类别cls){
startActivity(新意图(本,cls));
}
}

这只是实现目标的两种方法,它们都是非常基本的。有关启动活动的各种方式,请参阅和文档。此外,如果您想从活动中接收信息,也可以在
游戏
类中使用和实现(也许可以选择存储最后的结果,以便游戏处理。

好奇:为什么你不使用活动?起初我在学习一个关于游戏制作的教程。他没有使用活动,所以我现在也没有。我不得不说,它工作得很好