Glitchy拖动一个对象

时间:2017-04-27 15:34:42

标签: codenameone

我一直在为我的项目设计一个简单的拖动功能。我有一个处理所有事件输入的触摸表单。我的拖动实现工作正常,直到我快速移动鼠标。我听说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以获得多点触控支持。最后,我将有一个顶部和底部框,可以同时拖动。 有没有比这更好的方法来处理拖拽事件?提前谢谢!

1 个答案:

答案 0 :(得分:1)

更好的方法是在pointerPressed()中“选择”当前拖动的组件。然后在pointerDragged中,不进行此检查。您只是假设在pointerPressed中选择的项目是您要拖动的内容。

在pointerReleased中,您“取消选择”拖动的组件。