2010-05-13 6 views
0

절차 코드에서 부드러운 애니메이션을하려고합니다. 적어도 Silverlight에서는 DispatcherTimer가 아닌 Storyboard 타이머를 사용하는 것이 좋습니다. WPF의 타이머로 스토리 보드

Storyboard _LoopTimer = new Storyboard(); 
    public void StartAnimation() 
    { 
     _LoopTimer.Duration = TimeSpan.FromMilliseconds(0); 
     _LoopTimer.Completed += new EventHandler(MainLoop); 
     _LoopTimer.Begin(); 
    } 
    void MainLoop(object sender, EventArgs e) 
    { 
     // Do animation stuff here 

     // Continue storyboard timer 
     _LoopTimer.Begin(); 
    } 

그리고 실버 라이트

, 이것은 잘 작동 : 그래서 나는이 같은 것을 사용합니다. 하지만 WPF에서는 MainLoop() 만 한 번 쳤습니다. RepeatBehaviour를 Forever로 설정해도 도움이되지 않습니다. WPF에서 스토리 보드를 사용하여이 작업을 수행하는 올바른 방법은 무엇입니까?

대단히 감사합니다.

+0

여기에서 문제를 논의합니다. http://stackoverflow.com/questions/315427/wpf-storyboard-death – Amsakanna

답변

0

Silverlight에서 Storyboard를 사용하는 것은 초기 버전에서 DispatcherTimer가 없다는 것을 보완하기위한 해킹 일 뿐이라고 생각했습니다.

어쨌든 스토리 보드가 완료되면 스토리 보드를 다시 시작해야합니다. 자동으로 다시 시작되지는 않습니다.

+0

역사적인 기원을 모릅니다. 그러나 Storyboard가 DispatcherTimer보다 부드러운 애니메이션을 제공하는 것이 여러 곳에서 권장됩니다. (이전에 DispatcherTimer를 직접 사용하고 있었고 실제로는 꽤 엉망이었습니다.)반복 효과를 얻으려면 MainLoop()에서 _LoopTimer.Begin()이 필요합니다. 그러나 이것은 실버 라이트에서만 작동합니다. WPF에서는 여전히 루프되지 않습니다. WPF에서 루프를 만드는 방법은 무엇입니까? 그게 내 질문이다. – Adrian

+0

WPF에서 다시 시작되지 않는 이유는 확실하지 않습니다. 스토리 보드에 자녀가없는 것과 관련이있을 수 있습니까? –

관련 문제