문제

저는 (부드러운 스크롤을 위해) 모멘텀이있는 패널이있는 모바일 애플리케이션 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 스레드로 다시 마샬링해야 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top