Auf Tastendruck Spiel nach beenden des Videos starten
-
Ich lasse in meinem Programm ein Video im Vollbildmodus abspielen. Benutze dafür Direct3d und DirectShow.
Jetzt möchte ich, nachdem das Video zu ende ist, beim Drücken einer beliebigen Taste ein kleines Spiel starten.
Dabei nutze ich einfach die Windowsnachricht WM_Keydown.
Nur habe ich nur ncoh das Problem, dass ich noch abfragen muss, ob das Video bereits zu Ende ist, weil sonst auch schon während des Videos bei Tastendruck das Spiel gestartet wird. Gibt es eine Möglichkeit abzufragen, ob das Video schon beendet ist?Hoffe, ich habe mein Problem verständlich dargelegt.
MfG
Hundefutter
-
und du willst den armen Spieler wirklich mit der Videosequenz quälen?
Ein Mal isses ja wichtig, ein zweites Mal interessant, aber dann?Ich persönlich bin der Meinung, dass du auf Tastendruck einfach die Sequenz abbrechen solltest und ins Spiel gehen. Ansonsten sieht DX bestimmt sowas vor, falls du dieses zum Abspielen nutzt

-
Das Video soll schon angeguckt werden, da es sich nicht um ein einfaches Computerspiel handelt, sonder eher ein Animationsfilm mit kurzen Minispielen drin ist. Am Anfang kann jedoch später auch ausgewählt werden, ab wo man das ganze starten will, also kann man auch sofort zu dem Minispiel gehen, wenn man dieses einmal erreicht hat.
Also, wie gesagt, der Film steht eher im Vordergrund, nicht das Mini-Spiel, somit sollte das Video auch nicht abgebrochen werden können.
Weil im moment ist es so, dass wenn der Benutzer mittem im Video auf eine beliebige Taste kommt, das Video abbricht und das Spiel startet. Dies soll jedoch vermieden werden...Hoffe, mir kann doch noch jemand helfen.
MfG
Hundefutter
-
Ignoriere den Tastendruck, falls das Video ncoh nciht komplett abgelaufen ist. f'`8k
Bye, TGGC (\-/ returns)
-
ja, so weit bin ich ja auch schon, nur war meine Frage, wie ich überprüfen kann, ob das Video schon abgelaufen ist oder noch läuft!
Gibts da irgendeine Funktion, die zurückgibt, ob dsa Video beireits zu ende ist?
MfG
Hundefutter
-
wenn du weißt wie lange das video dauert, kannst du wenn du das video startest alle tasten sperren und auch einen timer starten, der wenn die zeit abgelaufen ist alle tasten wieder freigibt.
.MamboKurt
-
Ok, danke für den Tipp.
Wie kann ich alle Tasten sperren?Mit dem Timer, geht das nicht über ne Win-Nachricht WM_TIMER ?
So weit ich weiß, liefert GetTickCount() die aktuelle Zeit, die man dann in einer Variablen speichern muss.
Kann ich dann nicht einfach wenn das Video gestartet wird, die Zeit speichern und bei der Taste dann eine Abfrage mit einbauen, ob die Länge des Videos, z. B. 150 sec. schon abgelaufen ist?MfG
Hundefutter
-
Also, habe es jetzt mal folgendermaßen probiert:
(Ausschnitt aus der Callback-Funktion)
case WM_KEYDOWN: switch(wParam) { case VK_ESCAPE: pMC->Release(); pVW->Release(); pGB->Release(); DestroyWindow(hWnd); break; default: if (Spiel_Zustand == Spiel_Auswahl) { Spiel_Zustand = Spiel_Video1; Bg_schwarz(); DShowInit(hWnd); videotimer = SetTimer(hWnd, 1, 5000, NULL); //Timer erstellen } else if ((Spiel_Zustand == Spiel_Video1) && (video_beendet)) { Spiel_Zustand = Spiel_Spiel1; Spiel_Bg(); } break; case WM_TIMER: MessageBox(hWnd, "5 Sekunden sind vergangen", "Timer", 0); videotimer = KillTimer(hWnd, 1); video_beendet = true; break;Erstelle, wenn das Video gestartet wird einen Timer.
Wenn ich jetzt richtig informiert bin, müsste, wenn der Timer abgelaufen ist, die Nachricht WM_TIMER aufgerufen werden.
Nur irgendwie tut sich da nix...Finde meinen Fehler im Moment nicht, vllt kann mir ja nochmal jemand helfen.
Hundefutter
-
[Edit:] einfach igorieren
-
MamboKurt schrieb:
[Edit:] einfach igorieren
??

Irgendwie kann ich gerade nicht den Sinn hinter der Aussage erkennen....
-
alles klar, habe meinen Fehler jetzt gefunden....
Danke für die Hilfen!Hundefutter
-
Hundefutter schrieb:
MamboKurt schrieb:
[Edit:] einfach igorieren
??

Irgendwie kann ich gerade nicht den Sinn hinter der Aussage erkennen....
ich hatte was geschrieben, was im nachhinein keinen sinn gab. deswegen hab ich geschrieben, dass man den post einfach ignorienen soll.
-
axo, hab mich schon gewundert, wie ich das als Lösung meines Problems interpretieren soll...
