AGB  ·  Datenschutz  ·  Impressum  







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

Bildschirmschoner

Ein Thema von City Light · begonnen am 25. Okt 2002 · letzter Beitrag vom 7. Nov 2002
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von City Light
City Light

Registriert seit: 17. Sep 2002
314 Beiträge
 
#1

Bildschirmschoner

  Alt 25. Okt 2002, 22:24
Ich bin gerade dabei mir mein eignenden Schoner zu programmieren.
Nun komme ich aber nicht mehr weiter, folgendes..jeder kennt doch den Schoner von Windows.Ich glaub der heißt 3D-Objekt oder so na ja der, der sich von einer Seite zur anderen Seite des Bildschirmes bewegt.Also in allen Richtungen prallt.


Hier was ich zur Zeit Habe
Code:
var
  Form1: TForm1;
  vx: Integer = 1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.DoubleBuffered:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Image1.Left:=Image1.Left +vx;
  if Image1.Left>ClientWidth - Image1.Width-1 then
    vx:=vx*-1;
  if Image1.Left<1 then
    vx:=vx*-1;
end;
kann mir da jemand helfen?
Danke im vorraus
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 25. Okt 2002, 22:30
Hallo City Light,

vielleicht solltest Du uns verraten was denn genau nciht geht.
Welche Zeit hast Du im Timer eingestellt?

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von City Light
City Light

Registriert seit: 17. Sep 2002
314 Beiträge
 
#3
  Alt 25. Okt 2002, 22:34
Hi Daniel

Nun Ich wollte ein Bild im meinen Schoner einbauen, und der sollte kreuz und quer auf dem Monitor umherwandern

Den Timer habe ich auf 10 gestellt
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#4
  Alt 25. Okt 2002, 22:42
Hi,

was es machen soll hab ich kapiert, aber nciht was das Problem ist. Was passiert oder was passiert nicht?
Stellt den Timer mal auf 100 oder 200ms. Probiere es aus.
Alles was unter 50ms ist, ist für Windows eine reinen Tortur und Du kannst froh sein, wenn da überhaupt sich was bewegt. Versuch doch mal mit 5 oder 10ms eine Message anzuzeigen. Bei mir ist Windows mit solchen Zeiten schonmal abgestürtzt. Windows ist nunmal KEIN Echtzeitbestriebssystem. Das darfst Du nciht vergessen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von City Light
City Light

Registriert seit: 17. Sep 2002
314 Beiträge
 
#5
  Alt 25. Okt 2002, 22:48
Ich habs jetzt auf 100ms gestellt und siehe da es bewegt sich von link nach rechts

Nun wie bekomme ich aber das es sich in allen Richtungen bewegen kann
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6
  Alt 25. Okt 2002, 22:54
Hi,

ich habe es soeben ausprobiert. Es bewegt sich von links nach rechts. Na Toll.
Das wollte ich wissen, man muss ja nciht immer alles selber ausprobieren. Übrigens, bei mir läuft es im prinzip auch mit 10ms. Jedoch ruckelt es arg stark. Nciht unter 50ms, dann sieht es gut aus.
Ich werkel mal ein bisschen dran. Wenn Du möchtest das es sich in allen Richtungen bewegt, dann muss man da mit Randomize arbeiten und nciht mit festen links, rechts angaben, bringt ja nichts.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von City Light
City Light

Registriert seit: 17. Sep 2002
314 Beiträge
 
#7
  Alt 25. Okt 2002, 23:01
Danke für deine Hilfe

ein Code schnipzel wäre echt prima da ich noch nicht so den Umgang mit Delphi habe

Ich kann warten
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#8
  Alt 26. Okt 2002, 12:41
Hi City Light,

wen du willst, dass das Bild "kreuz und quer" herumfliegt, dann musst du auch eine Bewegung für die y-Richtung einbauen.

Code:
var
  Form1: TForm1;
  vx: Integer = 1;
  vy: Integer = 1;

implementation

{$R *.DFM} 

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.DoubleBuffered:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Image1.Left := Image1.Left + vx;
  Image1.Top := Image1.Top + vy;

  if ((Image1.Left > (ClientWidth - Image1.Width - 1)) or
      (Image1.Left < 1)
  then
    vx := vx * -1;
 
  if ((Image1.Top > (ClientHeight - Image1.Height - 1)) or
      (Image1.Top < 1)
  then
    vy := vy * -1;
end;
Wenn das Image in einem anderen Winkel fliegen soll, dann musst du nur den Startwert von vx bzw. vy ändern.

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#9
  Alt 26. Okt 2002, 13:07
Hi,

bei dem Source von d3g:
vor den then fehlt noch eine )
Die Variablen vx un vy dürfen nie den gleichen Wert haben, sonst bewegt sich das Bild nur in der Diagonalen.

Grüsse, Daniel

Nachtrag: ausserdem musst DU die Scrollbars von Form1 ausschalten, sonst Blitzen die manchmal auf.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#10
  Alt 26. Okt 2002, 13:35
Hi,

so nun auch mein Beispiel:

Code:
var
  Form1: TForm1;
  vx, vy: integer;

implementation
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
  vx := -10 + Random(20);
  vy := -10 + Random(20);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Image1.Left := Image1.Left + vx;
  Image1.Top := Image1.Top + vy;
  if (Image1.Left > ClientWidth - Image1.Width - 1) or (Image1.Left < 1) then
    vx := vx * -1;
  if (Image1.Top > ClientHeight - Image1.Height - 1) or (Image1.Top < 1) then
    vy := vy * -1;
end;
Auch hier muss man leider die Scrollbars ausschalten, Vielleicht schaffst Du es selbst dies zu verhindern.
Die Startrichtung ist immer unterschiedlich.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:45 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