weiterarbeiten trotz schleife??
-
hi...ich hätte da mal eine frage an euch. in der hoffnung das mir jemand helfen kann. ich habe folgende zwei probleme:
1. problem:
ich möchte ein schleife laufen lassen, das könnte beispielsweiße eine animation sein die auch mal länger geht...trotzdem möchte ich z.b. per entertaste einen andere befehl ausführen wärend die animation durchläuft. wie geht man da am besten heran??2. problem:
fast das gegenteil vom 1. problem...ich starte meine animation per leertaste...wenn ich direkt 3x oder mehrmals der leertaste hintereinander drücke dann läuft diese auch drei mal durch. wenn so eine animation jetzt aber 10 sekunden geht dann kann da auch mal nervig sein wenn man einmal zu viel gedrückt hat. wie kann ich die leertast oder alle tasten wärend der animation deaktivieren??ich würde mich echt sehr über eure hilfe freuen.
thx
GAST
-
ad 1) Das macht man mit Threads. Siehe z.B. http://www.gnu.org/software/pth/pth-manual.html
ad 2) Das hängt davon ab, wie du die Tastenabfrage bis jetzt implementiert hast.
-
super...vielen dank...ein guter tip...werd es gleich mal ausprobieren.
das 2. problem konnte ich schon alleine lösen. ich habe der tastenabfrage einfach eine bedingung gesetzt...und wärend der schleife kann die nicht erfüllt werden. sprich: er kann keine tastenanschläge übergeben.
EDIT: also das 2.problem löst doch noch ein problem da.
also ich arbeite mit linux und directfb...der hat eine eigene keybuffer. aber wenn die die ausführende taste drücke dann will der diese schleife unbedingt durchlaufen also mehrere male. das sieht ungefähr so aus:while (keybuffer->GetEvent (keybuffer, DFB_EVENT(&evt)) == DFB_OK) { if (evt.type == DIET_KEYPRESS) { switch (evt.key_symbol) { case DIKS_AB: schleife(); break;
hm...kennt sich da einer von euch mit aus...oder ist es vieleicht sogar ähnlich zur normale keyabfrage??
-
du könntest mit hilfe eines locks (mutex) in einer Variable speichern ob du gerade die Animation abspielst und ggf. nichts tun (die Leertaste ignorieren) wenn die Animation gerade läuft ...
-
so...habs hinbekommen. ich hab einfach vor der schleife die aktuelle zeit gelesen und am ende das selbe +50. und als bedingung das er die schleife nur ausführt wenn er die zeit+50 überschritten hat. so hat er genug zeit um die doppel-dreifach keycommands zu überspringen...und ich bin glücklich
manchmal ist es echt gut mal mit anderen darüber gesprochen zu haben.