2016-11-22 1 views
0

범위 컨트롤이 있고 액션 시퀀스가 ​​스토리 보드에 포함되어 있습니다. 나는 일련의 움직임을 만들지 만, 사용자가 역방향 버튼을 클릭 할 때 애니메이션을 반전시키고 싶다. 일시 중지 버튼도 있는데 제대로 작동합니다.클릭 이벤트에서 스토리 보드의 애니메이션을 뒤집습니다.

Screenshot of control

재생 버튼 코드 :

public void Animate(DateTime endDate) 
{ 
    previousMaxValue = (DateTime)rangeControl.SelectionRangeEnd; 
    previousMinValue = (DateTime)rangeControl.SelectionRangeStart; 
    double toValue = (endDate - previousMaxValue).TotalSeconds; 
    TimeSpan sp = TimeSpan.FromSeconds(diffInSeconds); 
    animation = new DoubleAnimation(0, toValue, new Duration(sp)); 

    storyboard.Children.Clear(); 
    storyboard.Children.Add(animation); 
    storyboard.AutoReverse = true; 
    Storyboard.SetTarget(animation, this); 
    Storyboard.SetTargetProperty(animation, new PropertyPath(AxisRangeAnimator.ValueProperty)); 
    storyboard.Begin(); 
} 

일시 정지 버튼 코드 :

public void Pause() 
{ 
    storyboard.Pause(); 
} 

나는 반대 버튼을 설정하기 위해 노력하고있어. 속성 storyboard.AutoReverse을 사용하면 애니메이션이 끝날 때 반대 방향으로 이동하지만 애니메이션이있는 곳이면 사용자가 버튼을 클릭 할 때이 효과를 얻고 싶습니다.

+1

애니메이션을 취소하고 정반대로 시작한 적이 있습니까? –

+0

나는 이것을 시도 할 것이다 .. 나는 스토리 보드의 실제 위치가 필요하고 실제 애니메이션의 경과 시간에 시간을 설정하는 것을 목표로한다. – imj

+1

앞으로의 애니메이션과 애니메이션의 끝에 시작부터 끝까지 시작할 수있다. HandoffBehavior.Compose를 사용하여 두 애니메이션을 병합하고 두 번째 애니메이션을 적용 할 때 원래 위치가 복원됩니다. –

답변

0

StoryBoard.Seek는 다음 클럭 틱이 발생할 때 Storyboard를 새로운 위치로 탐색합니다.

public void Reverse() 
{ 
    TimeSpan CurrentTime = (TimeSpan)storyboard.GetCurrentTime(); 
    TimeSpan sp = TimeSpan.FromSeconds(diffInSeconds); 
    TimeSpan SubtractTime = sp.Subtract(CurrentTime); 
    storyboard.Seek(SubtractTime, TimeSeekOrigin.Duration); 
}