【问题标题】:Synchronizing animations across pages跨页面同步动画
【发布时间】:2013-03-29 15:59:01
【问题描述】:

我目前正在构建一个在所有页面上使用简单 xaml 动画的应用程序。

这是动画的 xaml

    <Storyboard x:Name="raysSpin">
        <DoubleAnimation Duration="0:0:6.0" To="360" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="sunRays" RepeatBehavior="Forever"/>
    </Storyboard>

上面的动画出现在应用程序的所有页面上。现在,当用户导航到下一页时,我需要让这个动画在所有页面上保持同步,这样用户看起来就没有进入不同的页面。动画,无论它在时间轴中的哪个位置,都需要在新页面动画上设置该位置,并从我们离开的地方开始。

有没有人知道或有关于如何以有效的方式执行此操作的任何想法?

我的第一个也是唯一的想法是将动画的时间跨度存储到存储在 app.xaml.cs 中的全局变量中,然后在每个页面的 onNativgatedTo 中,将新页面动画设置为存储的时间跨度并从我们的位置开始留下它。它在一定程度上有效,但有明显的口吃。

我考虑过在它自己的线程上运行动画,但我不知道这是否可行,如果可以,该怎么做。

【问题讨论】:

    标签: c# xaml animation windows-phone-8


    【解决方案1】:

    最好的方法是将母版页分成不同的部分。一个是保留该控件的地方,另一个是您在用户导航时放置新控件的地方。即使您使用动画的当前状态设置了一个全局变量,当新页面加载时,除非您设置了 SLA,否则可能需要几秒钟,如果您想要给用户一种流畅的感觉。

    更新:

    类似这样的:

    您将新内容加载到“新用户控件”窗格中。

    【讨论】:

    • 这是最好的方法。只有一页,并使用用户控件来显示新内容。乐于助人:)
    • 只是一个简短的问题 Marco,所以我明白了这一点。是否可以保留子页面的导航堆栈?我解释你的答案的方式是你有一个母版页,我的背景和动画部分,然后是一个部分来保存应用程序所需的各个页面?有点像reflectionit.nl/Blog/2013/windows-8-xaml-tips-master-pages
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2010-12-08
    相关资源
    最近更新 更多