2009-06-17 77 views
0

假设我有以下XAML片段,我的困惑是Storyboard.TargetProperty的值的含义是什么?即“(UIElement.RenderTransform)。(TransformGroup.Children)[0]。(ScaleTransform.ScaleX)”的含义。Silverlight动画问题

 <DoubleAnimationUsingKeyFrames Storyboard.TargetName="p1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" BeginTime="00:00:00"> 
      <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.2500000" Value="1"/> 
      <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1"/> 
     </DoubleAnimationUsingKeyFrames> 

...

 <Path Height="2.75" Width="2.75" Data="M2.75,1.375 C2.75,2.1343915 2.1343915,2.75 1.375,2.75 C0.61560845,2.75 0,2.1343915 0,1.375 C0,0.61560845 0.61560845,0 1.375,0 C2.1343915,0 2.75,0.61560845 2.75,1.375 z" Fill="#FF9F9B9B" Stretch="Fill" Stroke="#FF000000" StrokeThickness="0" Canvas.Left="7" Canvas.Top="14" x:Name="p1"> 
      <Path.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform/> 
        <SkewTransform/> 
        <RotateTransform/> 
        <TranslateTransform/> 
       </TransformGroup> 
      </Path.RenderTransform> 
     </Path> 

由于事先 乔治

回答

1

的Storyboard.TargetProperty指定一个特定的属性随时间而改变。

如果你是自己写的,你可以这样说:

  <DoubleAnimationUsingKeyFrames Storyboard.TargetName="myRectange" 
Storyboard.TargetProperty="Width" BeginTime="00:00:00"> 
        <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/> 
        <SplineDoubleKeyFrame KeyTime="00:00:00.2500000" Value="1"/> 
        <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1"/> 
      </DoubleAnimationUsingKeyFrames> 

和简化的东西还真不少。在上面的例子中,你将随着时间的推移改变矩形的“宽度”属性。 Blend以其无限的所见即所得风格,使定位更加复杂一些。

在您的示例中,将对矩形应用变换,并随着时间的推移改变该变换。

澄清: Storyboard.TargetProperty = “(UIElement.RenderTransform)(TransformGroup.Children)[0](ScaleTransform.ScaleX)” 是一个的PropertyPath。它指定了随时间变化的财产。在这个例子中,我们定位了Rectangle的 - > RenderTransforms->第一个孩子(ScaleTransform) - > Scale X属性。这就是我们如何说出会发生什么变化。关键帧指定了该值随着时间的变化。

要记住的东西:变换是一个静态变化。应用ScaleX为2,并且该事物在X维度中加倍。但随着时间的推移没有任何变化(屏幕上没有任何动作)。为此,您需要动画来改变随着时间的推移。

心连心,埃里克

+0

其实,我的困惑是元素做什么“, ”(UIElement.RenderTransform)。(TransformGroup.Children)[0]。(ScaleTransform.ScaleX)“ 是指? – George2 2009-06-18 02:51:10