【问题标题】:Detecting Scroll with InputListener使用 InputListener 检测滚动
【发布时间】:2013-12-16 23:29:42
【问题描述】:

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

我有一个舞台,桌子里面有几个 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;
    }

}

进入和退出方法工作得很好,但滚动的方法不行.

我的想法是将它添加到舞台上以放大和缩小视口,但是……嗯,有什么想法吗?

提前谢谢你。

【问题讨论】:

    标签: java zooming libgdx


    【解决方案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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • mouseWheelMoved 是 AWT 控件上的一个方法,问题是关于 libgdx
      猜你喜欢
      • 1970-01-01
      • 2020-03-10
      • 2010-12-07
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多