Windows Phone 8.1中的操作惯性始终为零

时间:2014-06-05 13:55:12

标签: winrt-xaml transform windows-phone-8.1 win-universal-app

我正在编写一个通用应用程序,需要在ManipualtionDelta中正确处理操作惯性。操作时我得到正常值,但惯性部分总是为零(旋转和平移)。它只会在Windows Phone中发生这种情况,就像在Windows 8.1中它接缝一样。 为了防止出现问题,我设置了ManipulationModes.All。

3 个答案:

答案 0 :(得分:2)

我测试了它。 Windows Phone 8.1中肯定存在惯性

<Grid>
    <Ellipse Width="100"
             Height="100"
             HorizontalAlignment="Center"
             VerticalAlignment="Center"
             Fill="White"
             ManipulationDelta="Ellipse_ManipulationDelta"
             ManipulationMode="All">
        <Ellipse.RenderTransform>
            <CompositeTransform />
        </Ellipse.RenderTransform>
    </Ellipse>
</Grid>

有了这个:

private void Ellipse_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    var trasnform = (sender as FrameworkElement).RenderTransform as CompositeTransform;
    trasnform.TranslateX += e.Delta.Translation.X;
    trasnform.TranslateY += e.Delta.Translation.Y;
}

不确定问题。希望我的代码有所帮助。

祝你好运!

答案 1 :(得分:1)

不要在惯性下使用Delta.Translation。它是一个计算值,取决于自上一个事件运行以来经过的时间量。通常第一个是(0,0)。

而是做这样的事情

if (e.IsInertial) {
    ComputeMyOwnInertia(e.Velocities)
    e.Complete(); // no more inertial events
}

速度为lpx / msec(每毫秒逻辑像素数) 将它乘以~400可得出惯性带给你的估计值。

答案 2 :(得分:0)

Windows Phone平台不支持以下项目:

  • 不支持IsManipulationEnabled属性。默认情况下,Windows Phone上会启用操作事件。
  • 不支持旋转变换。
  • 不支持惯性事件。

http://technet.microsoft.com/en-us/windows/ff426933(v=vs.96)