【发布时间】:2023-03-19 12:21:01
【问题描述】:
有没有办法检测用户是否停止滑动?也许bij鼠标输入检查或其他东西。我在 onSliderChange 事件中尝试了鼠标 isButton0Release 和 hasFocus 来检查用户是否停止滑动,但这不起作用。
到目前为止我得到了什么
@NiftyEventSubscriber(id = "speedSlider")
public void onSliderChange(String id, SliderChangedEvent event)
{ boolean test2 = event.getSlider().hasFocus();
boolean test = nifty.getMouseInputEventQueue().getLastMouseDownEvent().isButton0Release();
System.out.println("before " + test2);
int speed = (int)event.getValue();
speedTextField.getRenderer(TextRenderer.class).setText(speed + "");
if(test2){
System.out.println("after " + test2);
main.setSimSpeed(speed);
}
}
还有xml中的滑块
<panel id="speed_up_down_panel" height="30px" width="180px" childLayout="center">
<control id="speedSlider" name="horizontalSlider" width="150px" min="1" initial="1" buttonStepSize="1">
<image id="#position" filename="Interface/sliderbutton.png" visibleToMouse="true" width="40px" height="40px"></image>
</control>
</panel>
现在代码有点乱,因为我在测试。
【问题讨论】:
-
你能解释一下为什么你需要这个活动吗?在滑动操作结束时做出反应并不是那么容易。主要是因为执行该操作的方法不止一种。您可以拖动手柄,单击轨道,使用键盘。除了拖动手柄之外,如何定义“停止滑动”?
-
我需要这个的原因是因为我必须通过套接字将滑块的值发送到控制器。如果我只使用 onSliderChange 事件,该值将被发送多次,所以我认为当用户停止滑动时,该值发送一次会更好。
-
固定超时时间不是更安全吗?如果值已更改并且在
x毫秒内不再更改,则发送更新的值?这将涵盖通过鼠标单击/按下轨道和键盘更改的变化。
标签: java jmonkeyengine nifty-gui