Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LibGdx:利用手势和鼠标输入_Java_Input_Libgdx_Gesture - Fatal编程技术网

Java LibGdx:利用手势和鼠标输入

Java LibGdx:利用手势和鼠标输入,java,input,libgdx,gesture,Java,Input,Libgdx,Gesture,在我的libgdx项目中,我有一个手势监听器和一个在不同类中使用的输入处理器。一个在玩家里面,一个在主状态里面。如果我指定其中一个作为输入处理器:Gdx.input.setInputProcessor()则我将无法从另一方获取输入 我尝试使用输入多路复用器: InputMultiplexer multi = new InputMultiplexer(); GestureHandler gesture = new GestureHandler(); InputProccessor input =

在我的libgdx项目中,我有一个手势监听器和一个在不同类中使用的输入处理器。一个在玩家里面,一个在主状态里面。如果我指定其中一个作为输入处理器:
Gdx.input.setInputProcessor()则我将无法从另一方获取输入

我尝试使用输入多路复用器:

InputMultiplexer multi = new InputMultiplexer();

GestureHandler gesture = new GestureHandler();
InputProccessor input =  new InputProcessor();

multi.addProcessor(new GesturDetector(gesture));
multi.addProcessor(new GestureDetector(input);

Gdx.input.setInputProcessor(multi);

这不起作用,导致游戏崩溃。我宁愿避免使用多路复用器。是否需要检查两种输入法?

多路复用是解决您问题的正确方法

多路复用器经常忽略的一点是,处理程序的返回值(true或false)非常重要。(在没有多路复用器的情况下被忽略)。结果显示您是否“处理”了输入。已处理的事件不会传播到多路复用器中的下一个处理器。此外,默认情况下,Eclipse创建的存根方法将返回“true”,这没有帮助


无论如何,这不会崩溃。

多路复用器是解决您问题的正确答案

多路复用器经常忽略的一点是,处理程序的返回值(true或false)非常重要。(在没有多路复用器的情况下被忽略)。结果显示您是否“处理”了输入。已处理的事件不会传播到多路复用器中的下一个处理器。此外,默认情况下,Eclipse创建的存根方法将返回“true”,这没有帮助


无论如何,这不会崩溃。

我有一个类同时实现了InputProcessor和GestureDetector。当我写multiplexer.addProcessor(这个)时;它只是添加输入,所以手势仍然不起作用。啊,是的,
输入多路复用器需要两个不同的对象。最简单的方法可能是创建一个新的
手势检测器
对象,将其调用转发给您的原始对象。很抱歉,这很麻烦,但我该怎么做呢?嗯,我不确定具体细节(您是否真的实现了
手势检测器
而不是
手势监听器
?我想您需要一个监听器?),通常:创建一个覆盖所有感兴趣的方法的新类,在每个方法中,它只调用组合inputprocessor/gesturedetector对象上的相同方法。现在您可以向InputProcessor注册此委托。这有点像黑客……感谢你的帮助,不幸的是他们没有一个界面来处理手势和鼠标输入。我有一个类同时实现了InputProcessor和GestureDetector。当我写multiplexer.addProcessor(这个)时;它只是添加输入,所以手势仍然不起作用。啊,是的,
输入多路复用器需要两个不同的对象。最简单的方法可能是创建一个新的
手势检测器
对象,将其调用转发给您的原始对象。很抱歉,这很麻烦,但我该怎么做呢?嗯,我不确定具体细节(您是否真的实现了
手势检测器
而不是
手势监听器
?我想您需要一个监听器?),通常:创建一个覆盖所有感兴趣的方法的新类,在每个方法中,它只调用组合inputprocessor/gesturedetector对象上的相同方法。现在您可以向InputProcessor注册此委托。这是一个有点黑客…感谢所有你的帮助不幸的是,他们没有一个界面,照顾手势和鼠标输入。