Einzelnen Beitrag anzeigen

pendragon302

Registriert seit: 8. Sep 2006
5 Beiträge
 
#1

OnkeyDown/Up Event Probleme-Zwei Tasten

  Alt 8. Sep 2006, 14:09
Hallo zusammen,

folgendes Problem beschäftigt mich gerade:
Ich möchte eine Art PingPongSpiel programmieren, dazu verwende ich zwei Rechteckige Shapes als Schläger. Das Problem ist wenn ich eine Taste "Pfeil Hoch" drücke dann geht der eine Schläger auch hoch, wenn ich dann ncoh zusätzlich die Taste "Q" drücke, damit der andere Schläger hoch geht und dann eine von beiden loslasse, dann bleiben beide stehen. Das beide sich gemeinsam bewegen bekomme ich hin, aber wenn ich eine Taste loslasse und die andere nochgedrückt ist, dann bleiben beide stehen. Hab schon mehere Varianten durch Suche bei google und hier ausprobiert, aber keine half wirklich. Mein momentaner Code dazu sieht folgendermassen aus:

Delphi-Quellcode:
procedure bewegen();
  begin
   
if (keyarray[38] and not keyarray[81]) then
  begin
    form1.shape1.top := form1.shape1.top - 2;
  end;
    

if (keyarray[38]) and (keyarray[81]) then
  begin
    form1.shape1.top := form1.shape1.top - 2;
    form1.shape2.top := form1.shape2.top - 2;
  end;

 end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

begin

keyarray[key]:=true;
bewegen();

end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

keyarray[key]:=false;
bewegen();

end;
Dabei ist keyarray[1..255] of boolean. 38 bedeutet Taste "Pfeil oben" und 81 bedeutet "Q".
Woran kann das denn liegen? Wird bewegen() vielelciht zuschnell aufgerufen?

Gruß
  Mit Zitat antworten Zitat