我有一个:
问题: 如何防止从屏幕调用touchup方法?我的目标只是处理演员的活动。我只想对演员的触摸做出反应,而不是对屏幕做出反应。
答案 0 :(得分:0)
以下是帮助您更好地理解我的答案的参考:
该链接显示了InputListener
类中的一种方法。在您的问题中,您询问了touchUp
方法,该方法也与touchDown
方法有关。
touchDown
无效时,touchUp
方法返回一个布尔值。因此,您无法取消“修饰”事件。但是,您可以通过返回true来“取消”“触地得分”事件。我之所以说“取消”,是因为它并没有真正取消它,只是让实现知道您正在处理“按下”和“按下”事件。
使用touchDown
方法可能是您的最佳选择。我相信您仍然可以使用touchUp
,但我不知道如果touchUp
返回true,其他监听器是否会收到touchDown
调用(考虑到文档,我认为他们不会) 。那是您必须自己测试的东西。
现在,如果您确实需要取消“修饰”事件,请执行以下操作:
您可以尝试取消活动。由于touchUp
中的InputListener
方法传递了一个InputEvent
对象,因此您可以尝试使用inputEvent.cancel()
答案 1 :(得分:0)
如果您将捕获诸如touchUp,touchDown等事件,则必须说该事件已处理,否则该事件将运行到下一个InputListener,直到一个侦听器说已处理该事件为止。
要将事件设置为已处理,必须在事件对象上调用handle()
方法:
actor.addListener(new InputListener(){
@Override
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
event.handle();
}
});
在这里使用InputMultiplexer进行了更多描述:Screen responds when button is clicked