2009-06-17 16 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> 

を、物事にかなり簡素化します。上記の例では、長方形の「幅」プロパティを時間の経過と共に変更しています。ブレンドは、無限のWYSIWYG方式で、ターゲットを少し複雑にします。

例では、変換が矩形に適用され、時間の経過とともにその変換が変更されています。

解明: Storyboard.TargetProperty = "(UIElement.RenderTransform)(TransformGroup.Children)[0](ScaleTransform.ScaleX)。。" でのPropertyPathあります。これは、経時的に変更されるプロパティを指定します。この例では、Rectangle's-> RenderTransforms->最初の子(ScaleTransform) - > ScaleXプロパティを対象としています。それが何を変えるかということです。キーフレームは、その値が時間とともにどのように変化するかを指定します。

何かを覚えておいてください:トランスフォームは静的な変更です。 2のScaleXを適用すると、その物はX次元で倍になります。しかし、時間の経過とともに変化するものは何もありません(画面上の動きはありません)。そのためには、時間の経過とともにトランスフォームを変更するアニメーションが必要です。

HTH、エリック

+0

は実は、私の混乱は、要素が「何で "(UIElement.RenderTransform)。(TransformGroup.Children)[0]。(ScaleTransform.ScaleX)" 私はAを追加しました? – George2

+0

を指し、明確化。 –