ManipulationMode解释道

时间:2014-04-18 12:22:11

标签: windows-8 windows-runtime uwp winrt-xaml uwp-xaml

有人可以解释manipulation modes的含义,例如TranslateXTranslateRailsXTranslateInertia吗? 什么是rail mode?他们在说什么惯性?

2 个答案:

答案 0 :(得分:8)

使用rails - 当输入处理器检测到操作主要是垂直操作还是大多数水平时,它会在报告转换增量/累积值时粘到相应的轴上。如果不是 - 它只允许自由操纵你操纵的任何东西。 Rails标志必须与非rails标志结合使用,因此只有TranslateRailsX不起作用。你需要它和TranslateX才能得到任何结果。

TranslateInertia标志允许在其他惯性标志的情况下对轻弹或惯性旋转/比例进行简单处理。基本上,如果您将该标志添加到TranslateX,例如并执行快速轻弹手势 - 即使手势完成,您也会继续获取输入事件(ManipulationDelta)一段时间。当您在输入流结束后轻弹时,您也会收到ManipulationInertiaStarting事件,因此您可以根据需要控制轻弹的移动距离。您可以在WinRT XAML Toolkit中查看my extensions该事件的参数,以便更好地控制轻弹弹道。

您的ManipulationDeltaEventArgs拥有IsIntertial属性,您还可以使用该属性来检查您获得的事件是直接来自输入事件还是轻弹的结果,如果是的话,还可以调用Complete()某些原因你不想继续获取电影的增量事件。

答案 1 :(得分:0)

这是一个简单的例子,展示了我如何实现TranslateRailsX / Y.

我希望它只能注册水平滑动,但只需使用TranslateX / Y就可以向上或向右拾取,即使我只是向上或向下滑动。

所以只是一个简单的XAML,而在我的实例中我只想要水平滑动而不是垂直滑动。

xaml文件:

<Grid Background="WhiteSmoke">
     <WebView Name="webview" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Grid>

xaml.cs文件:

    int x1;
    int x2;
    int y1;
    int y2;
public MainPage()
    {
        this.InitializeComponent();
        webview.ManipulationMode = ManipulationModes.TranslateRailsX |  ManipulationModes.TranslateRailsY;
        webview.ManipulationStarted += (s, e) => x1 = (int)e.Position.X;
        webview.ManipulationStarted += (s, e) => y1 = (int)e.Position.Y;

        webview.ManipulationCompleted += (s, e) =>
        {
            x2 = (int)e.Position.X;
            y2 = (int)e.Position.Y;

            System.Diagnostics.Debug.WriteLine(x1);
            System.Diagnostics.Debug.WriteLine(x2);
            System.Diagnostics.Debug.WriteLine(y1);
            System.Diagnostics.Debug.WriteLine(y2);

            if (x1  > x2)
            {
                System.Diagnostics.Debug.WriteLine("right");
            };
            if (x1 < x2 )
            {
                System.Diagnostics.Debug.WriteLine("left");

            }

        };

现在我在垂直滑动上得到以下内容

x1 180 
x2 180  
y1 201  
y2 386

水平滑动

 x1 89
 x2 293
 y1 371
 y2 371
 left or right 

希望这有助于处于同样困境的人。