2013-02-18 3 views
2

나는 모양이 있고 그 안에 Player이라는 작은 Panel이 있습니다. 패널을 사용자의 마우스에 "링크"하여 마우스가 움직일 때 어떻게 움직일 수 있습니까?마우스 움직임의 거리를 얻으십시오

나는 이미 Player_MouseMove에서 Player.MouseMove까지 이벤트를 구독했지만 실제로 마우스가 얼마나 움직 였는지 알 수 없다. 내가 갈 수있는 유일한 방법은 다음과 같이 설정하는 것입니다.

private Point previousLocation; 

private void Player_MouseMove(object sender, MouseEventArgs e) 
{ 
    int differenceX, differenceY; 
    differenceX = e.X - previousLocation.X; 
    differenceY = e.Y - previousLocation.Y; 
    previousLocation = e.Location; 
} 

이것은 매우 바보 같고, 여분의 변수를 가지고 매번 차이를 계산합니다. 완벽한 방법은 Player.LinkToCursor(); 또는 이와 같을 것입니다.하지만 자동화 된 방법이 없다면 더 좋은 방법이 있습니까?

+0

"... 갖는 별도의 변수"그, 그건 필수 변수 추가 변수 아니다. 어딘가에 보관해야합니다. –

+0

실제로이 작업을 수행하는 데는 꽤 표준적인 방법입니다. 나는 적은 양의 2D 게임을 만들었고, "현재 상태를 얻고, 이전 상태와 비교하고, 현재 상태를 이전 상태로 반복한다."는 모든 곳에서 사용된다. 시간 간격과 버튼 누름 감지는 다른 일반적인 것들과 비슷하다. – anaximander

+0

@SteveWellens 그래, 내 변수가 쓸모 없게 만들 수있는'MouseEventArgs e' 또는 그 안에 저장되기를 바랬다. :) 그러나 그렇지 않기 때문에, 네가 맞다. –

답변

관련 문제