我一直在为我的项目设计一个简单的拖动功能。我有一个处理所有事件输入的触摸表单。我的拖动实现工作正常,直到我快速移动鼠标。我听说getDragRegionStatus()获得了事件的敏感性(我可能正在读错API)。这对我来说是一个选择吗? Example
@Override
public void pointerDragged(int[] x, int[] y) {
if(RectController.top.contains(x[0], y[0])) {
PersonalizedData.touchTopX = x[0];
PersonalizedData.touchTopY = y[0];
}
else if(RectController.bottom.contains(x[0], y[0])) {
PersonalizedData.touchTopX = x[0];
PersonalizedData.touchTopY = y[0];
}
if(x.length >= 2 && y.length >= 2 && RectController.top.contains(x[1], y[1])) {
PersonalizedData.touchTopX = x[1];
PersonalizedData.touchTopY = y[1];
}
else if(x.length >= 2 && y.length >= 2 && RectController.bottom.contains(x[1], y[1])) {
PersonalizedData.touchTopX = x[1];
PersonalizedData.touchTopY = y[1];
}
}
我重写了带有数组参数的pointerDragged以获得多点触控支持。最后,我将有一个顶部和底部框,可以同时拖动。 有没有比这更好的方法来处理拖拽事件?提前谢谢!
答案 0 :(得分:1)
更好的方法是在pointerPressed()中“选择”当前拖动的组件。然后在pointerDragged中,不进行此检查。您只是假设在pointerPressed中选择的项目是您要拖动的内容。
在pointerReleased中,您“取消选择”拖动的组件。