使用平面投影的故事板动画不起作用

Storyboard animation using Plane Projection not working

我正在尝试创建翻页动画。现在滑动手势 myStoryboard.Begin() 被调用。

动画以代码开始,但屏幕不显示动画正在发生。但是,如果我从 window 切换回来(比如在 myStoryboard.Begin() 被调用后 5 秒,那么动画是可见的(从第 5 秒开始),就好像 Storyboard 像往常一样工作。

<Storyboard x:Name="myStoryboard">
        <DoubleAnimation
          Storyboard.TargetName= "RightPageImageOverlay"
          Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)"
          EnableDependentAnimation="True"
          From="0" To="10" Duration="0:0:10" />
</Storyboard>

图片:

<Grid Grid.Row="1" x:Name="flipViewGrid" >
        <Canvas x:Name="flipViewCanvas" >
            <WebView  x:Name="flipViewWebView" NavigationCompleted="WebView_NavigationCompleted" Source="http://127.0.0.1:2121"  Height="{Binding ElementName=flipViewCanvas, Path=ActualHeight}" Width="{Binding ElementName=flipViewCanvas, Path=ActualWidth}" Canvas.Left="0" Canvas.Top="0">
            </WebView>
            <StackPanel  Orientation="Horizontal" Canvas.Left="0" Canvas.Top="0" Canvas.ZIndex="1">
                <Image x:Name="LeftPageImageOverlay" Height="{Binding ElementName=flipViewCanvas, Path=ActualHeight}" Width="{Binding ElementName=flipViewCanvas, Path=ActualWidth }"   Loaded="PageImageOverlay_Loaded" ></Image>
                <Image x:Name="RightPageImageOverlay" Height="{Binding ElementName=flipViewCanvas, Path=ActualHeight}" Width="{Binding ElementName=flipViewCanvas, Path=ActualWidth }"  Loaded="PageImageOverlay_Loaded"  ManipulationMode ="All" ManipulationCompleted="RightPageImageOverlay_ManipulationCompleted" ManipulationDelta="RightPageImageOverlay_ManipulationDelta"  >
                    <Image.Projection >
                        <PlaneProjection RotationY="0"  CenterOfRotationX="0" x:Name="flipViewPlaneProjection"/>
                    </Image.Projection>
                </Image>
            </StackPanel>
        </Canvas>

    </Grid>

更新:我已经扩展了图像的上下文。代码应该如何工作如下。加载FlipViewWebView时,截取页面左右半边各2张截图覆盖FlipViewWebView。当检测到滑动手势时,播放 myStoryboard。下面是滑动时触发翻页动画的代码。

    private void RightPageImageOverlay_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        if (e.Velocities.Linear.X > .5 || e.Velocities.Linear.X < -.5) //say
            if (myStoryboard.GetCurrentState() == Windows.UI.Xaml.Media.Animation.ClockState.Stopped)
               myStoryboard.Begin();

        Debug.WriteLine("Velocity : " + e.Velocities.Linear.X.ToString());

    }

更新 2:我注意到的另一件事是,如果您在页面加载后立即滑动,则可以看到翻转动画。但是如果你在一两秒后滑动说,它是不可见的。

我在 MSDN 论坛上问过这个问题,他们回答说似乎存在涉及 PlaneProjection 的错误,并且已经提交了一份报告。

与此同时,我找到了解决方法。似乎正在动画的控件不想离开 0 degrees.If 你将 DoubleAnimationFrom 值更改为 "0" 以外的任何值,比如 [=13] =] 它会起作用。