1

さまざまなことを行う必要がある5つのボタンがありますが、そうではなく、それらを実行する方法を知る必要があります。

これが私のコードです。

public class MainMenu implements Screen {

CrazyZombies game;
Stage stage;
TextureAtlas atlas;
Skin skin;
SpriteBatch batch;
Button play, option, quit, custom, store, menu;

public MainMenu(CrazyZombies game) {
    this.game = game;
}

public void create () {
    stage = new Stage();
}

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0.09f, 0.28f, 0.2f, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    stage.act(delta);
    stage.draw();

    batch.begin();
    batch.end();
}

@Override
public void resize(int width, int height) {
    if (stage == null)
        stage = new Stage(width, height, true);
    stage.clear();

    stage.setViewport(854, 480, true);
    stage.getCamera().translate(-stage.getGutterWidth(), -stage.getGutterHeight(), 0);

    Gdx.input.setInputProcessor(stage);

    /**
     * quit Button
     */

    TextButtonStyle styleQuit = new TextButtonStyle();
    styleQuit.up = skin.getDrawable("8layer");
    styleQuit.down = skin.getDrawable("8layer");

    quit = new Button(styleQuit);

    quit.addListener(new InputListener() {
        public boolean touchDown(InputEvent event, float x, float y,
                int pointer, int button) {
            return true;
        }

        public void touchUp(InputEvent event, float x, float y,
                int pointer, int button) {

        }
    });

    /**
     * End quit Button
     */

     /**
      * store Button
      */

    TextButtonStyle styleStore = new TextButtonStyle();
    styleStore.up = skin.getDrawable("9layer");
    styleStore.down = skin.getDrawable("9layer");

    store = new Button(styleStore);

    store.addListener(new InputListener() {
        public boolean touchDown(InputEvent event, float x, float y,
                int pointer, int button) {
            return true;
        }

        public void touchUp(InputEvent event, float x, float y,
                int pointer, int button) {
            game.setScreen(new StoreScreen(game));
        }
    });

    /**
     * End store Button
     */

     /**
      * customs Button
      */

    TextButtonStyle styleCustom = new TextButtonStyle();
    styleCustom.up = skin.getDrawable("10layer");
    styleCustom.down = skin.getDrawable("10layer");

    custom = new Button(styleCustom);

    custom.addListener(new InputListener() {
        public boolean touchDown(InputEvent event, float x, float y,
                int pointer, int button) {
            return true;
        }

        public void touchUp(InputEvent event, float x, float y,
                int pointer, int button) {
            game.setScreen(new CustomScreen(game));
        }
    });

    /**
     * End customs Button
     */

     /**
      * Options Button
      */

    TextButtonStyle styleOptions = new TextButtonStyle();
    styleOptions.up = skin.getDrawable("11layer");
    styleOptions.down = skin.getDrawable("11layer");

    option = new Button(styleOptions);

    option.addListener(new InputListener() {
        public boolean touchDown(InputEvent event, float x, float y,
                int pointer, int button) {
            return true;
        }

        public void touchUp(InputEvent event, float x, float y,
                int pointer, int button) {
            game.setScreen(new OptionScreen(game));
        }
    });

    /**
     * End Options Button
     */

     /**
      * Play Button
      */

    TextButtonStyle stylePlay = new TextButtonStyle();
    stylePlay.up = skin.getDrawable("7layer");
    stylePlay.down = skin.getDrawable("7layer");

    play = new Button(stylePlay);

    play.addListener(new InputListener() {
        public boolean touchDown(InputEvent event, float x, float y,
                int pointer, int button) {
            return true;
        }

        public void touchUp(InputEvent event, float x, float y,
                int pointer, int button) {
            Gdx.app.log(CrazyZombies.LOG, "un-touched");
            game.setScreen(new GameScreen(game));
        }
    });

    /**
     * End Play Button
     */

    /**
     * start Background
     */

    TextButtonStyle styleMenu = new TextButtonStyle();
    styleMenu.up = skin.getDrawable("background");

    menu = new Button(styleMenu);

    /**
     * End Background
     */

    stage.addActor(menu);
    stage.addActor(play);
    stage.addActor(option);
    stage.addActor(store);
    stage.addActor(custom);
    stage.addActor(quit);

}

@Override
public void show() {
    Audio.playMusic(true);
    batch = new SpriteBatch();
    atlas = new TextureAtlas("data/mainmenu/mainmenu.pack");
    skin = new Skin();
    skin.addRegions(atlas);
}

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

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void dispose() {
    batch.dispose();
    skin.dispose();
    atlas.dispose();
    stage.dispose();
    Audio.dispose();
}

public void playButton(Button play) {

}
}

私の5つのボタンが設定され、アクションとリスナーがありますが、今は何もしません.1つのボタンを選んでテストすると動作しますが、ボタンは画面のどこからでもクリックできるので、問題だと思います.ボタンエリアですが、設定方法がわかりません。

.getheight()、.getWidth などを試しましたが、それでも同じです。私のテクスチャアトラスでは、すべての画像の高さと幅は同じですが、すべてが1つの画像になるため、これは私の問題でしょうか?

4

2 に答える 2

0

ボタンが何もしないという最初の問題については、イベントがすべてのボタンに、おそらく追加された順序で伝播されるためだと思いますStage。問題は、touchDown()メソッドがtrueを返すことです。これは、伝播が停止しtouchDown()、他のアクターのメソッドが呼び出されないことを意味します。何もしないように感じますが、実際には何かを行いますtouchDown()。メソッドが空であるだけです。

2 番目の問題については、おそらくアクターのサイズを設定していないことが原因です。

于 2013-05-22T20:45:19.390 に答える