저는 루핑 게임 프로그래밍에서 2 년이라는 배경을 가지고 왔습니다. 필자는 업데이트와 그리기와 같은 함수를 지속적으로 호출하는 응용 프로그램에서 상수 루프를 사용하는 데 많은 시간을 할애하여 각 프레임마다 값을 조금씩 늘림으로써 애니메이션과 같은 작업을 수행 할 수있었습니다.WPF에서 비 이벤트 기반 작업을 어떻게 구현해야합니까?
이제는 WPF 관련 업무를 수행 했으므로 그 시스템에 너무 의존하고 있습니다. 어쩌면 WPF에 대해 제한된 느낌을 받았을 지 모르지만 모든 것이 이벤트 기반으로 보이는 것 같습니다. 사용자가 버튼을 클릭하고, 코드를 알리고, 코드가 값을 조작합니다. 값이 변경되면 코드에 UI가 표시되고 UI는 레이아웃을 업데이트합니다. GUI 기반 응용 프로그램 프로그래밍에서는 잘 작동하지만 루프 기반 게임 프로그래밍에서는 사소한 상황에 직면했을 때 단순한 동작을 구현하는 좋은 방법을 찾을 수 없습니다.
너무 모호한 위험에 처해 있으므로 현재 문제를 예를 들어 설명하겠습니다. Windows 8이 공개 된 후에 나는 시맨틱 줌 (Semantic Zoom)이라는 아이디어에 매료되었다. Start Screen으로 놀고 난 후, 필자는 Microsoft Surface 용 WPF4.0에 대한 시맨틱 줌 포트 작업을 시작했습니다. 제 작업에서 Surface로 작업합니다. 나는 단지 핀치 동작을 사용하여보기 스택에서 위아래로 탐색 할 수있는 간단한 예를 원합니다.
많은 시간 동안 조작 이벤트를 이해하려고 노력한 결과 (나는 그 ... bleh에 들어 가지 않을 것임), 마침내 꼬집고 제스처를 기반으로 내 화면 크기를 조정하게되었습니다. 특정 지점을 지나면 확대되어 '축소 된'보기로 돌아갑니다. 정말 멋진. 그러나 문제는 사용자가 제스처를 완료하지 않고 축소하지 않기로 결정한 경우 더 작은보기로 남습니다. 나는 사용자의 눌렀을 때부터 끊임없이 '리바운드 (rebound)'되도록 뷰의 스케일을 애니메이트하고 싶습니다.이 루프 기반이라면 각 프레임을 향해 하나씩 내 보냅니다. 그러나 WPF는 모두 이벤트를 기반으로하기 때문에 조금 잃어 버렸습니다.
관성 또는 다른 조작 이벤트를 사용하여이 특정 문제에 대한 답변을 얻었을 수 있습니다. (듣고 기쁘게 생각합니다.) 또한 내가 사고 방식을 어떻게 바꿀 수 있는지 알고 싶습니다. WPF에서보다 효과적으로. 구독 할 이벤트를 아는 것입니까? 애니메이션을 사용하여 원하는대로 할 수있는 영리한 방법이 있습니까? 스레드를 사용하여 이러한 종류의 작업을 수행해야합니까, 아니면 부정 행위입니까 (신뢰할 수없는 것 같고 WPF의 스레드가 불안정한 것 같습니다).
이 문제는 WPF에서 효과적 일 수있는 가장 큰 장애물 중 하나입니다. (음, MVVM을 아직 알지 못하고 있습니다.) 나는 그것을 찢어 버리고 단순히 루프 기반 게임 프로그래밍 그 이상의 효과를 발휘하고 싶습니다.
이 제안이 올린 결과가 있습니까? – Clemens