AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Image ruckelt bei Bewegung

Ein Thema von Tilo2804 · begonnen am 26. Feb 2014 · letzter Beitrag vom 27. Feb 2014
 
Tilo2804

Registriert seit: 26. Feb 2014
3 Beiträge
 
#4

AW: Image ruckelt bei Bewegung

  Alt 27. Feb 2014, 20:03
Ich habe ein Panel, welches den Spieler darstellt. Dies ist nicht sichbar. Darauf lege ich ein Image mit dem Spieler.
Um den Spieler zu bewegen verändere ich den Wert left und top.

Hier der Quelltext des Sprungs:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var j : integer;
    Gegend_Datei : File of TGegend;
    Gegend : TGegend;
    hoch : boolean;
begin
///////hochspringen///////////

  if i <= Sprunghoehe // Sprunghöhe ist derzeitig bei 30
    then
      begin
      AssignFile(Gegend_Datei,'GegendDatei.dat'); { GegendDatei umfasst alle Objekte mit dem der Spieler kolidieren kann} 
      Reset(Gegend_Datei);
      hoch:= true;
        for j:=1 to AnzahlPanels do
          begin
            Read(Gegend_Datei,Gegend);
            if (Gegend.Left <= Panel1.Left + Panel1.Width ) and (Gegend.Left + Gegend.Widht >= Panel1.Left)
        then
            if (Panel1.Top >=Gegend.Top + Gegend.Height - 3) and (Panel1.Top <= Gegend.Top + Gegend.Height +3)
              then hoch := false;
          end;
        if hoch = true
          then
            begin
              Panel1.Top:= Panel1.Top - 2;
              if Form1.VertScrollBar.Position > 6 then
              Form1.VertScrollBar.Position:=Form1.VertScrollBar.Position-2; // Bildausschnitt bewegt sich mit Figur mit
              Inc(i);
            end;
        if hoch = false then i:=Sprunghoehe + 1;
        CloseFile(Gegend_Datei);
      end;

///////Kollisionsabfrage///////////

  AssignFile(Gegend_Datei,'GegendDatei.dat');
  Reset(Gegend_Datei);
  for j:=1 to AnzahlPanels do
    begin
      Read(Gegend_Datei,Gegend);
      if (Gegend.Left + Gegend.Widht >= Panel1.Left ) and (Gegend.Left < Panel1.Left + Panel1.Width)
        then
          if (Panel1.Top + Panel1.Height <= Gegend.Top +3) and (Panel1.Top + Panel1.Height >= Gegend.Top-3)
            then
              begin
                if h = true then i:=0;
                if h = false
                  then
                    begin
                      timer1.Enabled:=false;
                      if i>=450 then showmessage('TOT'); // Spieler stirbt ab bestimmter Falltiefe
                      i:=0;
                    end;
              end;
    end;
  CloseFile(Gegend_Datei);

///////Herunterfallen///////////

  if i > Sprunghoehe
    then
      begin
        if Form1.VertScrollBar.Position <> 1800 then
        Form1.VertScrollBar.Position:=Form1.VertScrollBar.Position+2; // Bildausschnitt bewegt sich mit Figur mit
        Panel1.Top:= Panel1.Top + 2;
        Inc(i);
        if i>=250
          then
            begin
              showmessage('TOT');
              i:=0;
              timer1.Enabled:=false;
            end;
      end;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
  Image15.Left:=Panel1.Left;
  Image15.Top:=Panel1.Top;
end;
Timer1 läuft im Intervall von 1ms

Timer3 setzt das Image im Intervall von 10ms immer wieder auf das Panel.

DoubleBuffered ist auf true

die Variable hoch wird auf false gesetzt, wenn der Spieler nur herunterfallen soll und nicht zuvor hochspringen

die Variable h wird auf true gesetzt wenn man die Sprungtaste (Space) drückt
wenn diese losgelassen wird, dann ist h = false


Es ist mir auch aufgefallen, dass es stärker flackert, wenn sich die Spielfigur wieder nach unten bewegt

Geändert von Tilo2804 (27. Feb 2014 um 20:07 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz