如何在水平ScrollPane中正确滚动垂直ScrollPane? (LibGDX)

时间:2016-03-01 13:38:05

标签: libgdx scrollpane

我根据教程here创建了一个水平的pagedScrollPane。每个页面都包含具有正常垂直ScrollPane的表格。

如果初始拖动是垂直的,我需要垂直滚动,如果拖动是水平的,我需要在页面之间滚动。我意识到我必须使用两个scrollPane myScroll.setCancelTouchFocus(false);才能激活垂直scrollPane。然后,如果我想要一个scrollPane来禁用,我决定将setCancelTouchFocus设置为true。

scrollVert.addListener(new DragListener() {
        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            if (!scrolling) {
                float dX = Math.abs(getDeltaX());
                float dY = Math.abs(getDeltaY());
                if (dX != 0 || dY != 0) {
                    if (dX > dY) {                          
                        scrollPages.setCancelTouchFocus(true);
                    } else {                            
                        scrollVert.setCancelTouchFocus(true);
                    }
                    scrolling = true;
                }
            }
            super.drag(event, x, y, pointer);
        }
        @Override
        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {              
            scrolling = false;
            scrollPages.setCancelTouchFocus(false);
            scrollVert.setCancelTouchFocus(false);              
            super.touchUp(event, x, y, pointer, button);
        }
    });

问题在于,如果我沿对角线(或快速向右和向下)拖动,则scrollPane会稍微向侧面跳跃,然后才会决定滚动的位置。

0 个答案:

没有答案