Анимация прыгающих шариков только в Silverlight XAML - PullRequest
0 голосов
/ 16 октября 2010

В Silverlight возможно ли сделать анимацию в стиле "прыгающих шариков" полностью в XAML, то есть без какого-либо кода-кода?

Ответы [ 4 ]

1 голос
/ 16 октября 2010

конечно! Это возможно на 100% полностью в XAML. Используя функции замедления, вы можете быстро получить физику прыгающих шаров.

1 голос
/ 16 октября 2010

Используя библиотеку симуляции физики, такую ​​как physhelper , вы можете использовать XAML для выполнения большей части, если не всей работы за вас.Такие проблемы, как столкновение и т. Д., Будут обрабатываться как поведение .Это не чистый XAML (так как для этого потребуется двоичная ссылка во время выполнения), но это самый близкий результат, который вы, вероятно, получите, не анимировав всю сцену как гигантский раскадровку.Посмотрите, например, это , в котором нет кода.

1 голос
/ 16 октября 2010

Это зависит. Если вы хотите, чтобы физика прыгающих шаров моделировалась во время выполнения (например, для обеспечения интерактивности), то это было бы не просто сделать в чистом Xaml. Если вы просто хотите воспроизвести предопределенную анимацию (например, как если бы это было видео), вы можете сделать это через раскадровки и ключевые кадры. Однако это, скорее всего, приведет к созданию очень большого и очень сложного файла Xaml.

Что вы пытаетесь сделать и почему вы хотите избежать использования кода?

0 голосов
/ 16 октября 2010

Это то, что я придумал -

<UserControl.Resources>
    <Storyboard  x:Name="bounce" >
        <DoubleAnimation Storyboard.TargetName="Ellipse1" 
                Duration="0:0:4" From="0" To="200" 
                RepeatBehavior="Forever" 
                AutoReverse="True" 
                Storyboard.TargetProperty="(Canvas.Top)">
        </DoubleAnimation>
        <DoubleAnimation Storyboard.TargetName="Ellipse1" 
                Duration="0:0:3" From="0" To="200" 
                RepeatBehavior="Forever" 
                AutoReverse="True" 
                Storyboard.TargetProperty="(Canvas.Left)">
        </DoubleAnimation>
    </Storyboard>

</UserControl.Resources>

<Canvas x:Name="LayoutRoot" Background="White">
    <Ellipse Canvas.Left="81" Canvas.Top="63" Height="35" Name="Ellipse1"
        Stroke="#FF190000" StrokeThickness="1" Width="34" Fill="#FF190000" />
</Canvas>

Вам все еще нужен код, чтобы запустить его, хотя -

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