XNA rejestruje kliknięcia myszą, gdy gra nie jest aktywna

13

Jeśli kliknę Alt-Tab i zrobię coś poza oknem gry, gra nadal rejestruje kliknięcia myszą (zarówno lewy, jak i prawy).

Gra nie „zużywa” kliknięć, ponieważ są one również wysyłane do aplikacji, która ma fokus.

Ale denerwujące jest słyszenie wystrzału za każdym razem, gdy klikniesz w przeglądarce internetowej ...

Problem występuje również, jeśli gra jest ustawiona na tryb pełnoekranowy.

asmo
źródło

Odpowiedzi:

15

Najlepszym rozwiązaniem, jakie znalazłem, jest przestanie reagować na dane wejściowe (i prawdopodobnie również wstrzymać grę), jeśli przestanie ona być aktywna.

Możesz sprawdzić Game.IsActivelub zaczepić zdarzenia Activatedi Deactivated.

Jest jedna drobna wada - chciałbym uznać to za błąd w ramach - gra zawsze zaczyna się w stanie Aktywnym, nawet jeśli gra nie jest aktywna, gdy zaczyna działać. (Na przykład: klikasz w innym oknie między uruchomieniem gry a rozpoczęciem gry).

Możesz obejść ten problem, sprawdzając, jakie jest aktywne okno podczas uruchamiania gry, prawdopodobnie używając GetForegroundWindow. Albo nie możesz się tym martwić - czasami zdarza się to jako programista, ale podejrzewam, że tak naprawdę nie wpływa na użytkowników końcowych.

Andrew Russell
źródło