powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не работает Stop у Storyboard
6 сообщений из 6, страница 1 из 1
Не работает Stop у Storyboard
    #38670475
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Объект анимации описан через XAML

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Canvas  x:Name="Canva" MouseUp="Canva_MouseUp" Background="Green">
            <Path x:Name="Star" Margin="10">
                <Path.Fill>
                    <ImageBrush ImageSource="Resources/color.png"/>
                </Path.Fill>
                <Path.Data>
                    <EllipseGeometry x:Name="Sputnik"   
                      RadiusX="{Binding Value, ElementName=RadiusSlider}" 
                      RadiusY="{Binding Value, ElementName=RadiusSlider}" />
                </Path.Data>
            </Path>
</Canvas>



Анимация запускается

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void ButtonPanel_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
...// Тут пропущены строки с настройкой параметров анимации
  
            Storyboard.SetTargetProperty(animation, new PropertyPath(EllipseGeometry.CenterProperty));
            Storyboard.SetTargetName(animation, "Sputnik");
            storyBoard.Children.Clear();
            storyBoard.Children.Add(animation);
            storyBoard.Begin(Star);
}



Мне нужно прерывать анимацию в любой момент. Сделал это по щелчку мышью по "Canva" MouseUp="Canva_MouseUp"

Код: c#
1.
2.
3.
4.
5.
6.
private void Сanva_MouseUp(object sender, MouseButtonEventArgs e)
        {
                storyBoard.Stop(); //Не останавливает
                storyBoard.Stop(Star); //Не останавливает
                Sputnik.BeginAnimation(EllipseGeometry.CenterProperty, null); //Останавливает
        }



Для проверки пробовал вместо Stop поставить Pause - тоже не работает.

"Sputnik.BeginAnimation(EllipseGeometry.CenterProperty, null)" останавливает, но иногда после такой остановки анимация самопроизвольно запускается.


Куда копать?
...
Рейтинг: 0 / 0
Не работает Stop у Storyboard
    #38670671
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И возможно не хватает описания
XAML storyboard и animation. (либо они в коде заданы)
...
Рейтинг: 0 / 0
Не работает Stop у Storyboard
    #38670679
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://msdn.microsoft.com/en-us/library/ms605796.aspx
Может этот пример поможет?
В этом примере Stop полностью отключает анимацию(вовзращает в исходное положение). myStoryboard.Pause(this); приостанавливает.
...
Рейтинг: 0 / 0
Не работает Stop у Storyboard
    #38670714
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
@k@DElpherИ возможно не хватает описания
XAML storyboard и animation. (либо они в коде заданы)
В коде.
Вот тут как раз пример как чисто в коде задано.
@k@DElpher http://msdn.microsoft.com/en-us/library/ms605796.aspx
Может этот пример поможет?
В этом примере Stop полностью отключает анимацию(вовзращает в исходное положение). myStoryboard.Pause(this); приостанавливает.

Большое спасибо. Я этот пример и раньше смотрел, но не заметил, что там

myStoryboard.Begin(this, true );

Пропустил важный нюанс. И не удивительно, 13 конструкторов - ни хухры-мухры.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public void Begin(
	FrameworkContentElement containingObject,
	bool isControllable
)



Параметры
containingObjectТип: System.Windows.FrameworkContentElement
Объект, содержащийся в той же области видимости имен, что и целевые свойства анимаций раскадровки. Анимации без TargetName применяются к containingObject. 
isControllableТип: System.Boolean
Значение true если раскадровка должна интерактивное управление; в обратном случае — значение false.



Вот так все работает
Код: c#
1.
2.
3.
4.
5.
//Запуск 
storyBoard.Begin(Star, true);
...
//Остановка
storyBoard.Stop(Star);
...
Рейтинг: 0 / 0
Не работает Stop у Storyboard
    #38671208
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2,

а что мешает сделать анимацию триггерной на событие?

в ресурсы помещаем Storyboard
Код: xml
1.
2.
3.
4.
5.
6.
7.
        <Storyboard x:Key="Storyboard1">
            <ColorAnimation Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
                                                Duration="0:0:1.5"
                                                To="SteelBlue"/>
            <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(RotateTransform.Angle)"
                             From="0" To="90" Duration="0:0:1.5" RepeatBehavior="Forever"/>
        </Storyboard>


сам объект
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<TextBlock Width="100" Height="100" Background="Red" RenderTransformOrigin="0.5,0.5">
            <TextBlock.RenderTransform>
                <RotateTransform Angle="0"/>
            </TextBlock.RenderTransform>

            <TextBlock.Triggers>
                <EventTrigger RoutedEvent="Mouse.MouseDown">
                    <EventTrigger.Actions>
                        <BeginStoryboard x:Name="BeginStoryboard1" Storyboard="{StaticResource Storyboard1}"/>
                    </EventTrigger.Actions>
                </EventTrigger>
                <EventTrigger RoutedEvent="Mouse.MouseUp">
                    <EventTrigger.Actions>
                        <StopStoryboard  BeginStoryboardName="BeginStoryboard1"/>
                    </EventTrigger.Actions>
                </EventTrigger>
            </TextBlock.Triggers>
        </TextBlock>
...
Рейтинг: 0 / 0
Не работает Stop у Storyboard
    #38671342
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Roman Mejtes,

На самом деле у меня список анимаций нефиксированной длины, путь в которых формируется в рантайме. Запускаться они должны и поодиночке, и сериями переменой длины в переменном порядке.
Поэтому я предположил, что мне будет проще все сделать в коде, чем рисовать десятки повторяющихся кусков строк XAML и, если вдруг понадобится, вручную все это править.
XAML хорош своей наглядностью и плох многословностью



=================================

Это продолжение работы над

Перемещение объекта
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не работает Stop у Storyboard
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]