문제
저는 (부드러운 스크롤을 위해) 모멘텀이있는 패널이있는 모바일 애플리케이션 UI에서 작업 중이며 현재 다음 코드를 사용하여 부드러운 스크롤 중에 UI를 업데이트하고 있습니다. 라코 디스
보시다시피 Application.DoEvents();
는 추악한 머리를 키우고 있습니다!제거하고 싶지만 UI를 반복하고 업데이트하는 방법을 생각할 수 없습니다.어떤 도움이나 아이디어라도 훌륭합니다!
.net CF에서이 작업을하고 있지만 디자인 문제라고 생각하므로 플랫폼이 그다지 중요하지 않을 것 같습니다.
해결책 2
루프 (및 모든 app.doEvent 호출)를 시도하고 제거하고 onPaint () 메서드에서 kineticscroll을 호출 한 다음 kineticscroll 메소드에서 무효화 ()를 호출합니다.
나는 당신이 어떤 종류의 상태 추적을 가지고 있음을 알 수 있으므로 다음과 같이 말할 수 있습니다 :
if(_curState == States.KineticScroll)
KineticScroll();
.
onPaint () 메소드에서 주 상태가 승격을받을 때만 호출합니다.
기본적으로 루프는 로컬에서 루프로 이동합니다. OnPaint -> KineticScroll -> Invalidate -> OnPaint...etc
own 루프를 얻는 W / o of doevents를 호출합니다!
다른 팁
"게임 루프"와 같이 작동하는 타이머를 생성합니다. 초당 x 시간을 실행합니다.
또한 마지막 전화 이후 경과 된 시간이 얼마나 많은 시간을 경과 할 수 있는지 추적 할 것이므로 해당 시간을 기준으로 얼마나 많이 이동할 수 있는지 계산할 수 있습니다.추가 성능을 위해 동작이있는 경우에만 타이머를 시작하고 중지 할 수 있습니다.
어떤 타이머를 사용하는 모든 타이머에 따라 UI 업데이트 호출을 UI 스레드로 다시 마샬링해야 할 수 있습니다.