哦,好吧......我遇到了一个我不知道出了什么问题的问题。
我有一个舞台,里面有一些Tiles(128x128大小的方形演员)。
我想要做的是,当我向上滚动时,相机会缩小,当我向下滚动时,相机会放大。 我阅读了libgdx文档并想出了一种方法来尝试使其工作但是...缺少某些东西而且我不知道它是什么,有点看起来像InputListener没有得到我的滚动动作。
为了测试它,我尝试将有关滚动操作的一些信息打印到控制台,但这不起作用。
这是我的InputListener:
private class MouseEvents extends InputListener{
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
setDrawable(new TextureRegionDrawable(new TextureRegion(selected)));
}
public void exit(InputEvent event, float x, float y, int pointer, Actor fromActor) {
setDrawable(new TextureRegionDrawable(new TextureRegion(unselected)));
}
public boolean scrolled(InputEvent event, float x, float y, int amount){
System.out.println("ZoomValue: " + amount + " at " + x + "x" + y);
return true;
}
}
输入和退出方法工作得很好,但是滚动的方法没有,如果我将这个监听器添加到Tile或者监听器只是使用scrolled()方法到舞台甚至是带有磁贴的表,没有任何反应
我的想法是将它添加到舞台上以放大和缩小视口,但是......好吧,任何想法?
提前谢谢。
答案 0 :(得分:1)
您必须使用InputProcessor:
public class MyInputProcessor implements InputProcessor {
@Override
public boolean scrolled (int amount){
//Use the ammount wisely!
return false;
}
@Override public boolean keyDown (int keycode) { return false; }
@Override public boolean keyUp (int keycode) { return false; }
@Override public boolean keyTyped (char character) { return false; }
@Override public boolean touchDown (int x, int y, int pointer, int button) { return false; }
@Override public boolean touchUp (int x, int y, int pointer, int button) { return false; }
@Override public boolean touchDragged (int x, int y, int pointer) { return false; }
@Override public boolean touchMoved (int x, int y) { return false; }
}
别忘了设置它:
MyInputProcessor inputProcessor = new MyInputProcessor();
Gdx.input.setInputProcessor(inputProcessor);
答案 1 :(得分:-1)
考虑使用mouseWheelMoved方法。它内置于java中,可以为您提供所需的内容。考虑转到here获取比我能给出的更深入的教程。