点击windows8应用程序的X, Y动画Storyboard按钮

本文关键字:动画 Storyboard 按钮 windows8 应用程序 点击 | 更新日期: 2023-09-27 18:10:04

我花了一整天的时间看XAML故事板的例子,但是WinRT/Windows8应用程序不像WPF那样工作(至少我认为),我都很困惑。我想要的是一个按钮,当点击时,它向左移动100px,向上移动100px。我正经历着最艰难的时刻,我知道一旦我得到了我想要的东西,我就能从那里开始工作。

还有,如果有人能教我如何使用"故事板"。"那太棒了。

 <Rectangle
  Name="Rectangle01"
  Height="100"
  Width="100"
  Fill="Red">
        <Rectangle.Resources>
                    <Storyboard x:Name="myboard">
                        <DoubleAnimation 
                Storyboard.TargetName="Rectangle01"
                Storyboard.TargetProperty="Width"
                From="100" To="3600" Duration="0:0:6" />
            </Storyboard>
            </Rectangle.Resources>
    </Rectangle>

这里有一个例子,我只是在故事板上搞砸了。直到我尝试执行它时才抛出错误,但它仍然不起作用。

点击windows8应用程序的X, Y动画Storyboard按钮

是的,WRT在某些方面有一点不同,但在很多方面没有。

你想要做的是移动你的Button,向上和向左所以逻辑上在XY轴上,对吧?所以在我看来,我认为RenderTransform/TranslateTransform可以利用XY;

<Button Click="StartTheMove">
  <Button.RenderTransform>
    <TranslateTransform x:Name="MoveFoo"/>
  </Button.RenderTransform>
</Button>

现在我们有了MoveFoo并设置了变换,因为我知道WRT的唯一默认Routed.EventLoaded,所以我们不能这样做,所以将StartTheMove绑定到Click处理程序中,如;

private void StartTheMove(object sender, RoutedEventArgs e)
{
    MoveTheButton.Begin();
}

现在我们有了我们的处理器,我们想要启动MoveTheButton它将是你实际的故事板集合,作为一个资源在某个地方,比如说你的窗口。资源之类的;

<Storyboard x:Name="MoveTheButton">
  <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MoveFoo"
                                 Storyboard.TargetProperty="Y">
    <SplineDoubleKeyFrame KeyTime="0:0:1.25" Value="100" />
  </DoubleAnimationUsingKeyFrames>
  <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MoveFoo"
                                 Storyboard.TargetProperty="X">
    <SplineDoubleKeyFrame KeyTime="0:0:1.25" Value="-100" />
  </DoubleAnimationUsingKeyFrames>
</Storyboard>

一旦我们达到Storyboard然后去告诉我们的变换,我们希望X的属性和Y得到一些新的属性声明(这是你Storyboard.TargetProperty进来加入有趣的),我们要设置这两个属性的值之外的东西他们已经基本上告诉我们想要移动100 px的Y()和-100 px X(左)的2 d轴。你也可能想要玩键时间,无论快或慢,你想要的效果发生。

虽然我没有时间测试这个,只是在我离开办公室之前临时拼凑起来的,我们都经历过你的经历,希望它能有所帮助。您还应该能够添加交互行为,以利用您可能更习惯的相同类型的事件触发器(参见教程),并以这种方式处理事件,从而丢弃处理程序代码。

然而,希望这有助于,如果没有,我会在早上再次看到它,并将采取另一个尝试。干杯!