Kar*_*mar 7 java android gesturedetector libgdx pinchzoom
我是libgdx的新手.我有以下问题.我想为我的游戏进行缩放缩放.为此我在GestureDetectorListener课堂上上课GameStage.
在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;
}
}
Run Code Online (Sandbox Code Playgroud)
我也设置InputListener了舞台的演员,以便拖动它们.问题是,当我设置InputProcessor为GestureDetector,拖动我的Actors不起作用.我想用相机进行缩放缩放GestureDetector,但它不会对拖动产生影响.我怎样才能做到这一点?
请帮忙!谢谢.
CodeNoob是正确的道路,但我认为你可能想要以不同的方式构建事物.
您可以使用an InputMultiplexer来安装全局GestureListener和舞台的侦听器:
GestureDetector gd = ...
Stage myStage = ...
InputMultiplexer im = new InputMultiplexer(gd, myStage); // Order matters here!
Gdx.input.setInputProcessor(im);
Run Code Online (Sandbox Code Playgroud)
另外需要注意的是boolean输入侦听器中所有方法的返回值.任何返回"true"的都会将事件标记为"已处理",并且多路复用器不会将事件传递给其对等方.此外,多路复用器中输入处理器的顺序也有所不同(因为它可能会隐藏来自底层inputProcessor的事件).因此,在您的示例中返回"true"的自动生成的存根将"吃掉"一堆事件.如果此处理程序是多路复用器中的第一个,则会隐藏舞台中的事件.
| 归档时间: |
|
| 查看次数: |
5516 次 |
| 最近记录: |