AW: Suche Hilfe bei Bewegung einer Form
Zitat:
kann es nicht sein, dass hier :
Delphi-Quellcode:
der Kopf nur an den Koordinaten 250,300 sein kann, da nur dort ein create vorhanden ist?
Kopf:= TKopf.create(250,300,Image1,Futter);
Kopf.zeichnen(); |
AW: Suche Hilfe bei Bewegung einer Form
Nochmal: Du zeichnest den Kopf nur ein einziges mal. Danach nie wieder.
Hast du auch das
Delphi-Quellcode:
nach allen Abfragen eingesetzt oder nur gerade für den Links-Fall?
Kopf.zeichne()
|
AW: Suche Hilfe bei Bewegung einer Form
Also bei mir funktioniert es so:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, mTHintergrund, mTSchlange, mTFutter, mTKopf; type { TForm1 } TForm1 = class(TForm) Image1: TImage; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } Hintergrund : THintergrund; Links,Rechts,Hoch,Runter : Boolean; Kopf : TKopf; public { Public-Deklarationen } Schlange : TSchlange; Futter : TFutter; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Hintergrund:= THintergrund.create(Image1); Hintergrund.zeichnen(); Schlange:= TSchlange.create(Image1.Width div 2,Image1.Height-30,Image1,Futter); Kopf:= TKopf.create(Image1.Width div 2 ,Image1.Height-30 ,Image1,Futter); Kopf.zeichnen(); end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Links := Key = VK_LEFT; Rechts := Key = VK_Right; Hoch := Key = VK_Up; Runter := Key = VK_Down; end; procedure TForm1.Timer1Timer(Sender: TObject); begin IF (Links = True) and (Kopf.GetZXPosition > 0) Then begin Kopf.bewege_links(); Kopf.zeichnen; end; IF (Rechts = True) and (Kopf.GetZXPosition < 649) Then begin Kopf.bewege_rechts(); Kopf.zeichnen; end; IF (Hoch = True) and (Kopf.GetZYPosition > 0) Then begin Kopf.bewege_oben(); Kopf.zeichnen; end; IF (Runter = True) and (Kopf.GetZYPosition < 481) Then begin Kopf.bewege_unten(); Kopf.zeichnen; end; end; procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Links := Key = VK_LEFT; Rechts := Key = VK_Right; Hoch := Key = VK_Up; Runter := Key = VK_Down; end; end. |
AW: Suche Hilfe bei Bewegung einer Form
Zitat:
|
AW: Suche Hilfe bei Bewegung einer Form
Eigentlich genau so wie Ginko es gerade noch einmal schön ausgeschrieben hat: Nur durch das Ändern der Zahlen-Variablen ändert sich auf dem Bildschirm ja noch nichts. Du musst nach jeder Änderung (also einer Bewegung) die Zeichne()-Prozedur aufrufen damit diese die Änderungen überhaupt auf den Bildschirm malen kann.
|
AW: Suche Hilfe bei Bewegung einer Form
Man sollte noch die Klassen die man mit Create erstellt hat wieder freigeben.
Also:
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin FreeAndNil(Hintergrund); FreeAndNil(Kopf); //usw... end; |
AW: Suche Hilfe bei Bewegung einer Form
Zitat:
Aber du hast hoch und runter vertauscht :) Was soll das aber heißen, Klassen freizugeben? |
AW: Suche Hilfe bei Bewegung einer Form
Zitat:
unter allgemeiner Aufbau. An Hoch und runter hatte ich nichts geändert, war schon vertauscht. Mfg |
AW: Suche Hilfe bei Bewegung einer Form
Deshalb ja auch mein Hinweis auf den Destruktor. Im Konstruktor werden Objekte angelegt, deshalb sollte es auch einen Destruktor geben, der die wieder abräumt.
|
AW: Suche Hilfe bei Bewegung einer Form
Eine Frage hätte ich noch : Wie kann ich den Schritt der Bewegung schreiben? :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz