문제

각 양식에 많은 그리기/애니메이션이 포함된 다양한/단일 양식을 사용하여 .NET CF에서 응용 프로그램을 만들어야 합니다. 관리할 수 있도록 단일 업데이트[상태 관리 등을 위한 자체 업데이트] 기능을 갖고 싶습니다. 내 [J2ME 게임 코드]가 큰 변경 없이 작동할 수 있도록 여러 상태를 변경했습니다. 몇 가지 가능한 시나리오에 도달했습니다.둘 중 어느 것이 완벽할까요?

  1. 단일 양식을 갖고 컨트롤을 수동으로 추가/삭제한 다음 게임루핑 트릭을 사용하세요.
  2. 컨트롤을 사용하여 다양한 양식을 만들고 메인 스레드에서 update 및 application.doEvents()를 호출합니다.[ while(isAppRunning){ UPDATE() Application.DoEvents() }
  3. 필요에 따라 각 양식에 업데이트 - 페인트 루프를 만듭니다.
  4. 다른 아이디어.

이에 관해 제안해 주세요.

도움이 되었습니까?

해결책

게임이라면 대부분의 양식을 삭제하고 기본적인 것만 작업하고, 가능하면 비트맵을 작업하고 기본 양식의 페인트 방법이나 그 안에 있는 컨트롤(아마도 패널)을 재정의하여 렌더링합니다.그러면 더 나은 성능을 얻을 수 있습니다.

주요 문제는 컴팩트 프레임워크가 실제로 많은 UI 재미를 위해 설계되지 않았으며 전체 프레임워크처럼 무료로 이중 버퍼링을 얻을 수 없다는 것입니다. 적절한 투명성은 WinForm 컨트롤과 관련이 있으며 UI 스레드를 너무 오랫동안 사용하면 심각한 렌더링 결함이 발생하게 됩니다.백그라운드 스레드에서 너무 많은 작업을 수행하면 그런 결과를 얻을 수도 있습니다!:영형

Application.DoEvents를 명시적으로 호출하는 것만으로는 결코 최적의 성능을 얻을 수 없습니다. 경험에 따르면 문제를 해결하거나 UI에 작은 해킹을 작성할 때만 이를 사용하는 것입니다.

게임을 백그라운드 스레드에 고정한 다음 컨트롤에서 .Invoke를 호출하여 기본 UI 스레드로 다시 마샬링하여 디스플레이를 업데이트하고 UI에서 사용자 입력을 처리하는 동안 응답할 시간을 충분히 두는 것이 좋습니다.사용자 입력은 제가 일반적인 winform 컨트롤을 피하는 또 다른 이유입니다. 모바일 장치에는 일반적으로 키가 많지 않기 때문에 키를 다시 매핑할 수 있어 매우 유용하므로 일반적으로 미리 설정된 키 이벤트/응답이 있는 TextBox와 같은 것을 피합니다.

또한 새로운 양식을 보여주면 미묘한 일시 중지가 가능하므로 다른 양식을 사용하는 것을 피합니다. 일반적으로 비즈니스 소프트웨어를 작성할 때 이 문제를 피하기 위해 컨트롤을 기본 양식으로 교체합니다.

결국에는 무엇이 가장 좋은지 알아보기 위해 다양한 기술을 실험해 볼 가치가 있을 것입니다.또한 저는 일반적으로 비즈니스 소프트웨어만 개발하므로 CF에서 게임을 개발하는 사람들로부터 팁을 얻을 수 있는지 확인하세요.

HTH!

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