矢印キーまたはコントローラーの方向パッドを使用して、メニューをナビゲートできるようにしようとしています。これまでのところ、私は運がありませんでした。
質問は:現在のメニューまたは libgdx メニューのキーボードにアクセスできるようにする方法を教えてもらえますか?
私はいくつかのことで少し初心者で、Javascript のバックグラウンドを持っています。
これが私がやろうとしていることの例です:
http://dl.dropboxusercontent.com/u/39448/webgl/qb/qb.html
いくつかのボタンを追加するだけですぐに使えるシンプルなメニューの場合は、次のようにします。
http://www.sadafnoor.com/blog/how-to-create-simple-menu-in-libgdx/
または、私のコードを使用することもできますが、私は多くのカスタム スタイルを使用しています。
そして、これが私のコードの例です:
import aurelienribon.tweenengine.Timeline;
import aurelienribon.tweenengine.Tween;
import aurelienribon.tweenengine.TweenManager;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.InputListener;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.Align;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.project.game.tween.ActorAccessor;
public class MainMenu implements Screen {
private SpriteBatch batch;
private Sprite menuBG;
private Stage stage;
private TextureAtlas atlas;
private Skin skin;
private Table table;
private TweenManager tweenManager;
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
menuBG.draw(batch);
batch.end();
//table.debug();
stage.act(delta);
stage.draw();
//Table.drawDebug(stage);
tweenManager.update(delta);
}
@Override
public void resize(int width, int height) {
menuBG.setSize(width, height);
stage.setViewport(width, height, false);
table.invalidateHierarchy();
}
@Override
public void resume() {
}
@Override
public void show() {
stage = new Stage();
Gdx.input.setInputProcessor(stage);
batch = new SpriteBatch();
atlas = new TextureAtlas("ui/atlas.pack");
skin = new Skin(Gdx.files.internal("ui/menuSkin.json"), atlas);
table = new Table(skin);
table.setBounds(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
// Set Background
Texture menuBackgroundTexture = new Texture("images/mainMenuBackground.png");
menuBG = new Sprite(menuBackgroundTexture);
menuBG.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
// Create Main Menu Buttons
// Button Play
TextButton buttonPlay = new TextButton("START", skin, "inactive");
buttonPlay.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
((Game) Gdx.app.getApplicationListener()).setScreen(new LevelMenu());
}
});
buttonPlay.addListener(new InputListener() {
public boolean keyDown (InputEvent event, int keycode) {
System.out.println("down");
return true;
}
});
buttonPlay.padBottom(12);
buttonPlay.padLeft(20);
buttonPlay.getLabel().setAlignment(Align.left);
// Button EXTRAS
TextButton buttonExtras = new TextButton("EXTRAS", skin, "inactive");
buttonExtras.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
((Game) Gdx.app.getApplicationListener()).setScreen(new ExtrasMenu());
}
});
buttonExtras.padBottom(12);
buttonExtras.padLeft(20);
buttonExtras.getLabel().setAlignment(Align.left);
// Button Credits
TextButton buttonCredits = new TextButton("CREDITS", skin, "inactive");
buttonCredits.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
((Game) Gdx.app.getApplicationListener()).setScreen(new Credits());
}
});
buttonCredits.padBottom(12);
buttonCredits.padLeft(20);
buttonCredits.getLabel().setAlignment(Align.left);
// Button Settings
TextButton buttonSettings = new TextButton("SETTINGS", skin, "inactive");
buttonSettings.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
((Game) Gdx.app.getApplicationListener()).setScreen(new Settings());
}
});
buttonSettings.padBottom(12);
buttonSettings.padLeft(20);
buttonSettings.getLabel().setAlignment(Align.left);
// Button Exit
TextButton buttonExit = new TextButton("EXIT", skin, "inactive");
buttonExit.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.exit();
}
});
buttonExit.padBottom(12);
buttonExit.padLeft(20);
buttonExit.getLabel().setAlignment(Align.left);
// Adding Heading-Buttons to the cue
table.add().width(190);
table.add().width((table.getWidth() / 10) * 3);
table.add().width((table.getWidth() / 10) * 5).height(140).spaceBottom(50);
table.add().width(190).row();
table.add().width(190);
table.add(buttonPlay).spaceBottom(20).width(460).height(110);
table.add().row();
table.add().width(190);
table.add(buttonExtras).spaceBottom(20).width(460).height(110);
table.add().row();
table.add().width(190);
table.add(buttonCredits).spaceBottom(20).width(460).height(110);
table.add().row();
table.add().width(190);
table.add(buttonSettings).spaceBottom(20).width(460).height(110);
table.add().row();
table.add().width(190);
table.add(buttonExit).width(460).height(110);
table.add().row();
stage.addActor(table);
// Animation Settings
tweenManager = new TweenManager();
Tween.registerAccessor(Actor.class, new ActorAccessor());
// Heading and Buttons Fade In
Timeline.createSequence().beginSequence()
.push(Tween.set(buttonPlay, ActorAccessor.ALPHA).target(0))
.push(Tween.set(buttonExtras, ActorAccessor.ALPHA).target(0))
.push(Tween.set(buttonCredits, ActorAccessor.ALPHA).target(0))
.push(Tween.set(buttonSettings, ActorAccessor.ALPHA).target(0))
.push(Tween.set(buttonExit, ActorAccessor.ALPHA).target(0))
.push(Tween.to(buttonPlay, ActorAccessor.ALPHA, .5f).target(1))
.push(Tween.to(buttonExtras, ActorAccessor.ALPHA, .5f).target(1))
.push(Tween.to(buttonCredits, ActorAccessor.ALPHA, .5f).target(1))
.push(Tween.to(buttonSettings, ActorAccessor.ALPHA, .5f).target(1))
.push(Tween.to(buttonExit, ActorAccessor.ALPHA, .5f).target(1))
.end().start(tweenManager);
tweenManager.update(Gdx.graphics.getDeltaTime());
}
public static Vector2 getStageLocation(Actor actor) {
return actor.localToStageCoordinates(new Vector2(0, 0));
}
@Override
public void dispose() {
stage.dispose();
atlas.dispose();
skin.dispose();
menuBG.getTexture().dispose();
}
@Override
public void hide() {
dispose();
}
@Override
public void pause() {
}
}