WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Problem mit 'KeyPressFcn'

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2011, 18:14     Titel: Problem mit 'KeyPressFcn'
  Antworten mit Zitat      
Hallo,
ich hoff ihr könnt mir bei meinem Problem mit der 'KeyPressFcn' helfen.

Zuerst vorweg: ich bin Matlabanfänger - also bitte etwas Nachsicht Smile - und wir haben im Rahmen unserer Vorlesung die Möglichkeit ein Projekt zu machen. Ich habe ein Snake (wie man es von alten Nokiahandys kennt) in Matlab geschrieben.

Zu meinem Problem:
Das Programm läuft soweit einwandfrei bis man stirbt und der Benutzer gefragt wird ob das Spiel erneut gestartet werden soll oder nicht.
Bejaht der Spieler diese Frage so startet das Spiel erneut, jedoch erkennt die KeyPressFcn keine Eingabe. Erst wenn der Benutzer per Mausklick auf die Figure klickt werden neue Keypresses erkannt.

Das Programm läuft in keiner GUI sondern in einer normalen Figure, einzig die Buttons bei der Abfrage werden mit 'uicontrol' gesetzt. Beim Spiel selbst werden jene einfach versteckt. Die Figure ist im Vordergrund: 'figure(fh)', wobei 'fh' der Name meiner einzigen Figure ist.

Die 'KeyPressFcn' (bzw. 'WindowKeyPressFcn' da ich auch diese Variante versucht habe) habe ich folgendermaßen definiert:

Code:

set(fh, 'WindowKeyPressFcn', @keytest);
.
.
.
function way = keytest(varargin)
            drawnow;
            way = get(fh, 'CurrentKey');
.
.
.
end
 


Hoffe ihr könnt mir bei meinem Problem weiterhelfen und danke euch im Vorraus Smile

lg


Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 22.06.2011, 19:09     Titel:
  Antworten mit Zitat      
Hi,

Ich habe dein Problem nicht ganz verstanden. Liegt es am KeyPressed oder liegt es einfach daran, dass die Figur nicht mehr aktiv ist?

Dies wäre nämlich mit

figure(fh)

nach dem Neustart des Programms zu lösen.

Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.06.2011, 23:46     Titel: Re: Problem mit 'KeyPressFcn'
  Antworten mit Zitat      
Hallo Anonymous,

Die KeyPressFcn der Figure wird nur aufgerufen, wenn die Figure aktiv ist. Zwar behauptet die Dokumentation seit Matlab 5.3, dass "figure(FigureHandle)" die Figure aktiv macht. Leider stimmt das aber zumindest bis Matlab 2009a nicht und ein gedrückter Button gibt den Focus nicht mehr raus.

Es hilft aber, den Button (oder anderes UICONTROL) temporär zu "disabled":
Code:

set(ButtonH, 'Enable', 'off');
drawnow;
set(ButtonH, 'Enable', 'on');

Hilft Dir das weiter?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2011, 16:46     Titel:
  Antworten mit Zitat      
Hallo

danke für die schnelle Antworten, den Button zu disablen hat mein Problem gelöst Smile

Dass die Figure durch 'figure(FigureHandle)' aktiv gemacht wird stimmt auch bei Matlab 2010b noch nicht..

Liebe Grüße Very Happy
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.