Почему шар в этой анимации выглядит рубленым, когда он меняет положение? - PullRequest
2 голосов
/ 24 марта 2011

Вот ссылка на анимацию: http://www.microdivision.com/blog/Strange-Silverlight-Behavior

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
    x:Class="BouncingBall.MainPage"
    Width="640" Height="480">
    <UserControl.Resources>
        <Storyboard x:Name="Bounce" RepeatBehavior="Forever" AutoReverse="True">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="Ball">
                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                <SplineDoubleKeyFrame KeyTime="0:0:1" Value="-144" KeySpline="0,1,1,1"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </UserControl.Resources>

    <i:Interaction.Triggers>
        <i:EventTrigger>
            <ei:ControlStoryboardAction Storyboard="{StaticResource Bounce}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>

    <Canvas x:Name="LayoutRoot" Background="#FFCADFFF">
        <Ellipse x:Name="Ball" Stroke="Black" Width="100" Height="100" Fill="#FFF31D1D" Canvas.Top="190" Canvas.Left="0">
            <Ellipse.RenderTransform>
                <CompositeTransform/>
            </Ellipse.RenderTransform>
        </Ellipse>
    </Canvas>

</UserControl>

Ответы [ 2 ]

1 голос
/ 27 марта 2011

В ответе SharpGIS на http://forums.silverlight.net/forums/t/223659.aspx включение аппаратного ускорения решило проблему.

Для HTML измените элемент управления Silverlight, добавив следующий параметр:

<param name="EnableGPUAcceleration" value="true" />
0 голосов
/ 24 марта 2011

Я думаю, это может быть результатом адаптации Silverlight во время воспроизведения. На моей машине мяч кажется не отбитым большую часть времени , несмотря на тот факт, что у меня более старая машина с едва хорошим CPU / GPU. Silverlight использует только процессор для рендеринга (за исключением операций трехмерной перспективы, когда это сказано), а его анимация на основе времени позволяет вырезать кадры для адаптации к клиенту хоста. Это известно за изменчивость в результате. Silverlight 5 обещает поддержку графического процессора.

Есть ли причина, по которой вы используете сплайн вместо этого?

<Storyboard x:Name="Bounce" RepeatBehavior="Forever" AutoReverse="True">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="Ball">
                <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-144">
                    <EasingDoubleKeyFrame.EasingFunction>
                        <BounceEase EasingMode="EaseIn" Bounciness="0" Bounces="1"/>
                    </EasingDoubleKeyFrame.EasingFunction>
                </EasingDoubleKeyFrame>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...