Bestimmter Tastendruck im Buffer?



  • Hey,

    ich suche schon seit langem nach einer Möglichkeit,

    abzufragen, ob eine Taste das erste Mal gedrückt wurde.

    Naja, schwierig zu formulieren, ich zeigs mal:

    Zum Beispiel:

    if(key[KEY_SPACE])
    	{
    	spr->rocket = 1;
            //spr->curframe = 0;
    
    	}
    

    Beim Drücken der Space Taste soll eine bestimmte Anitmation loslaufen. Natürlich beim Frame 0 angefangen. Wie erreiche ich aber jetzt, dass spr->curframe auf 0 springt, danach aber normal weiterläuft?

    In der Vergangenheit hab ich das mit einer Variable gemacht, die immer wieder zurückgesetzt wurde, was wir aber doch als sehr unsauber erschiehn, und schnell unübersichtlich wird bei 10 verschiedener solcher Abfragen.

    if(key[KEY_SPACE])
    	{
    	spr->rocket = 1;
            if(++zaehlvariable == 1)
               spr->curframe = 0;
    	}
        .....
        zaehlvariable = 0;
    

    Hat jemand eine Idee wie man Abfragen könnte ob die Taste das "erste Mal" gedrückt wird, bzw, wenn die Taste gedrückt gehalten wird, dass die framerate dann weiterläuft?



  • Meien Idee dazu:

    for(int k=0;k<256;++k)
    {
      if(key[k]!=oldkey[k])
        if(key[k])
           keyPressed(k);
        else
           keyReleased(k);
       oldkey[k]=key[k];
    }
    


  • Danke für deine Antwort, ich werds mal ausprobieren, wobei ich vermute, dass
    es dadurch ein kleinen Ruckler geben wird 😃


Anmelden zum Antworten