Avatar billede zapzone Nybegynder
08. december 2007 - 14:30 Der er 2 kommentarer og
1 løsning

KeyPress event kan ikke fanges

Hej Eksperter.

Jeg er ved at lave et klassisk snake spil. Mit problem er, at når mit game-loop kører, så kan jeg ikke opfange når der trykkes på keyboardet... :/ Kører min while løkke ikke, så kan jeg sagtens fange KeyPress eventen.

Min kode ser således ud:

Game-loop:

        private void StartGame()
        {
            gamerunning = true;
            double timeElapsed = 0.0;
            GameTimer timer = Service.GetGameTimer();
            timer.Start();

            while (gamerunning)
            {
               
                timeElapsed += timer.ElapsedTime;
               
                if (timeElapsed > gamespeed)
                {
                    UpdateLogic();
                    timer.Reset();
                    timeElapsed = 0.0;
                }

                Application.DoEvents();
            }
        }

KeyPress event:

        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (gamerunning)
            {
              hvis det er pil op
              {
                  sæt retning til op
              }
            }
           
        }
Avatar billede zapzone Nybegynder
08. december 2007 - 14:37 #1
Lige en tilføjelse.
Sådan som jeg har forstået det, så skulle KeyPress eventen blive tilføjet til en "event kø" som først bliver afviklet/tømt når der kaldes Application.DoEvents(); - hvilket jeg også synes giver fin mening, men det virker åbenbart ikke :( da jeg, som I kan se, kalder DoEvent() metoden i slutningen af hvert gennemløb.
Avatar billede skov_p Praktikant
08. december 2007 - 23:01 #2
Der er en property på din form der hedder noget i retningen af KeyPreview eller sådan noget. Den skal være = True for at formen "ser" tastetryk og kan smage på det inden en evt. listbox gør det.
Avatar billede zapzone Nybegynder
09. december 2007 - 00:16 #3
Ha! Så virker det :)
Løsningen var dog ikke property'en KeyPreview, men det var denne som gav mig blod på tanden :) KeyPreview = true ændrede ikke noget, løsningen var derimod at bruge PreviewKeyDown eventen, istedet for KeyPress :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester