gpt4 book ai didi

java - libgdx 中的手势检测器

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:49 26 4
gpt4 key购买 nike

我是 libgdx 的新手。我有以下问题。我想为我的游戏做缩放。为此,我的 GameStage 中有 GestureDetectorListener 类。

GameStage 中,我有以下 GestureDetector 代码:

OrthographicCamera camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
this.setCamera(camera);


GestureDetector gestureDetector = new GestureDetector(20, 0.5f, 2, 0.15f, new GestureDetectorListener());
Gdx.input.setInputProcessor(gestureDetector);

class GestureDetectorListener implements GestureListener {
float initialScale = 1;

@Override
public boolean touchDown(float x, float y, int pointer, int button) {
initialScale = camera.zoom;
return true;
}

@Override
public boolean tap(float x, float y, int count, int button) {
// TODO Auto-generated method stub
return true;
}

@Override
public boolean longPress(float x, float y) {
// TODO Auto-generated method stub
return true;
}

@Override
public boolean fling(float velocityX, float velocityY, int button) {
// TODO Auto-generated method stub
return true;
}

@Override
public boolean pan(float x, float y, float deltaX, float deltaY) {
return true;
}

@Override
public boolean zoom(float initialDistance, float distance) {
float ratio = initialDistance / distance;
camera.zoom = initialScale * ratio;
return true;
}

@Override
public boolean pinch(Vector2 initialPointer1, Vector2 initialPointer2,
Vector2 pointer1, Vector2 pointer2) {
// TODO Auto-generated method stub
return true;
}

}

我还为舞台上的Actors设置了InputListener,以便拖动它们。问题是,当我将 InputProcessor 设置为 GestureDetector 时,我的 Actors 无法拖动。我想用相机和 GestureDetector 进行缩放,但它不会对拖动产生影响。我该怎么做?

请帮忙!谢谢。

最佳答案

CodeNoob 走在正确的道路上,但我认为您可能希望以不同的方式构建事物。

您可以使用 InputMultiplexer安装全局 GestureListener 和舞台的监听器:

GestureDetector gd = ...
Stage myStage = ...
InputMultiplexer im = new InputMultiplexer(gd, myStage); // Order matters here!
Gdx.input.setInputProcessor(im);

另一件需要注意的事情是输入监听器中所有 boolean 方法的返回值。任何返回“真”的都将事件标记为“已处理”,多路复用器不会将事件传递给其对等方。此外,多路复用器中输入处理器的顺序也有所不同(因为它可能隐藏来自底层 inputProcessor 的事件)。因此,在您的示例中返回“true”的自动生成的 stub 将“吃掉”一堆事件。如果此处理程序位于多路复用器中的第一个,则将从该阶段隐藏事件。

关于java - libgdx 中的手势检测器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com