Проблема с анимацией Silverlight - PullRequest
0 голосов
/ 17 июня 2009

Предположим, у меня есть следующие фрагменты XAML, моя путаница заключается в том, что означает значение Storyboard.TargetProperty? т.е. значение "(UIElement.RenderTransform). (TransformGroup.Children) [0]. (ScaleTransform.ScaleX)".

        <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>

спасибо заранее, George

1 Ответ

1 голос
/ 17 июня 2009

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, в его бесконечной моде WYSIWYG, делает таргетинг немного более сложным.

В вашем примере преобразование применяется к прямоугольнику, и вы изменяете это преобразование с течением времени.

Разъяснение: Storyboard.TargetProperty = "(UIElement.RenderTransform). (TransformGroup.Children) [0]. (ScaleTransform.ScaleX)" является PropertyPath. Он определяет свойство, которое будет изменяться со временем. В этом примере мы нацеливаемся на свойство Rectangle-> RenderTransforms-> first child (ScaleTransform) -> Scale X. Вот как мы говорим, что изменится. Ключевые кадры определяют, как это значение изменяется со временем.

Что следует иметь в виду: трансформация - это статическое изменение. Примените ScaleX 2, и вещь удваивается в измерении X. Но ничего не меняется со временем (ничего не движется на экране). Для этого вам понадобится анимация, чтобы изменить трансформацию с течением времени.

hth, Эрик

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...