Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MSS手势,在metro style应用程序中向不同方向滑动_Javascript_Microsoft Metro_Winjs - Fatal编程技术网

Javascript MSS手势,在metro style应用程序中向不同方向滑动

Javascript MSS手势,在metro style应用程序中向不同方向滑动,javascript,microsoft-metro,winjs,Javascript,Microsoft Metro,Winjs,我的这段代码可以很好地用于手指滑动手势,也就是说,如果我滑动手指,它将触发事件并调用nextMonth()函数。现在有什么方法可以检查我是否向上和向下滑动,以便在两个不同的手势上调用两种不同的方法 var myGesture = new MSGesture(); var v = this.element.querySelector(".bartouch"); myGesture.target = v;

我的这段代码可以很好地用于手指滑动手势,也就是说,如果我滑动手指,它将触发事件并调用nextMonth()函数。现在有什么方法可以检查我是否向上和向下滑动,以便在两个不同的手势上调用两种不同的方法

            var myGesture = new MSGesture();
            var v = this.element.querySelector(".bartouch");
            myGesture.target = v;
            v.addEventListener("MSGestureEnd", handleListner,false);
            v.addEventListener("MSPointerDown", handleListner, false);

        function handleListner(evt) {
            if (evt.type == "MSPointerDown")   
                {
                myGesture.addPointer(evt.pointerId);
                return;
            }
        that.nextMonth();
        }
你有两个选择:

  • 使用
    mspirture
    ,处理事件以计算用户手指的平移,并查看它们是否在正确的方向上。
    MSGestureChange
    返回的事件对象包括
    translateX
    translateY
    属性,这些属性告诉您用户的手指移动了多远。有一个详细的样本

  • 使用
    Windows.UI.Input.gestureRecognitizer
    并使用手势对象上的将手势设置为X平移或Y平移。演示了如何做到这一点。它主要涉及创建GestureRecognizer类,并通过处理要查看其交互的DIV上的
    MSPointer[Down | Move | Up | Cancel]
    DOM事件向其提供事件,并通过
    进程[Down | Move | Up]事件处理程序将它们传递给(共享)识别器实例

  • 就我个人而言,我建议使用2,而不是1——虽然设置起来比较困难,但最终用户将获得一致的刷卡手势体验,轻弹等,而不是像选择方法1那样手动调整手势。

    我已经在我的一个游戏中成功地使用它来处理不同方向的手势

    这是处理所有四个方向所需的全部代码:

    var hammerOptions = { swipeVelocityX: 0.1, swipeVelocityY: 0.1 };
    Hammer(contentContainer, hammerOptions).on("swipeleft", function(event) { moveBlocksLeft(); });
    Hammer(contentContainer, hammerOptions).on("swiperight", function(event) { moveBlocksRight(); });
    Hammer(contentContainer, hammerOptions).on("swipeup", function(event) { moveBlocksUp(); });
    Hammer(contentContainer, hammerOptions).on("swipedown", function(event) { moveBlocksDown(); });
    

    其中
    contentContainer
    是一个包含内容的div,每个方向都有进一步处理手势的功能。

    您的Ball-Eight示例链接不起作用。是否有可能更新链接或链接到另一个示例,以演示您在2中概述的行为?