使用InputListener检测Scroll

时间:2013-12-16 23:29:43

标签: java zoom libgdx

哦,好吧......我遇到了一个我不知道出了什么问题的问题。

我有一个舞台,里面有一些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()方法到舞台甚至是带有磁贴的表,没有任何反应

我的想法是将它添加到舞台上以放大和缩小视口,但是......好吧,任何想法?

提前谢谢。

2 个答案:

答案 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);

参考:Event Handling

答案 1 :(得分:-1)

考虑使用mouseWheelMoved方法。它内置于java中,可以为您提供所需的内容。考虑转到here获取比我能给出的更深入的教程。