Silverlight2009.11.24 02:31
실버라이트에서 미디어를 재생하는데 가장 많인 쓰이는 컨트롤로 MediaElement 가 있습니다.

MediaElement의 기본 속성으로 AutoPlay가 있어서 Source부분에 경로를 선언해주거나 바인딩해주면 1회 재생에는

문제가 없이 깔끔하게 동작을 합니다.


문제는 고객들의 요구사항이 1회만으로 만족을 못 하고 반복재생을 요구할 때도 있다는 것입니다.

그래서 "StoryBoard처럼 RepeatBehavior 를 new RepeatBehavior(횟수); 하면 되겠구나. 룰루랄라~!!!"

뜨억!!! 없습니다. 


아니! 왜? '미디어엘리먼트'는 반복재생이 안되는거냐구.

그냥 수고스러우시겠지만 Xaml단에서 미디어 엘린먼트를 선언해 주시고 아래의 코드를 작성하시면 무한도전(?)

아니 무한재생 모드에 들어갑니다. 

MediaE : MediaElement의 네임

위의 소스를 보시면 미디어엘리먼크가 끝날때 마다 이벤트를 잡아서 MediaE_MediaEnded()에 넘기기 떄문입니다.

여기까지는 뭔가 쉬운듯하면서 허접해 보이신다구요. (물론 좀 많이 허접하고 내용도 없네요.)


그래서 쪼금 업그레이드를 해 봤습니다.

MediaRepeat이 재생을 원하는 횟수겠구요. (지금 '3'으로 표시된곳에 함수를 선언하시면 동적으로 되겠죵?)


다들 아시겠지만 사족을 좀 달자면.....

MediaElement.MediaEnded 는 단순히 미디어가 재생완료된 시점 (10초짜리 미디어이면 10초인 부분)
MediaElement.Stop(); 은 미디어를 종료시킴과 동시에 미디어 처음으로 돌립니다. (0초인 부분)
MediaElement.Position 은 위에서 10초인 부분과 0초인 부분 같이 현재 미디어의 재생 포커스 위치입니다.
그걸 다시 TimeSpan을 써서 '0'으로 이동시킨 것이구요,

따라서. this.MediaElement.Stop() 또는 MediaElement.Position = TimeSpan.FromSeconds(0); 둘 중
하나만 쓰셔도 동작하는데 전혀 문제는 없습니다.

감사합니다.

Posted by UXPRO