Merkwürdiger Darstellungs Fehler bei gif Animation
Ich hab mal wieder ein 'Problemschen' :mrgreen:
Ich habe aus SPass mal versucht eine Figur auf einem Hintergrund laufen zu lassen, und das so: Hintergrund ist TImage (normale JPG) Die Figur ist wenn sie steht BMP Sobald sie läuft, wird eine Gif-Animation abgespielt die dann verschoben wird (die Beine bewegen sich in dieser Ani.) Allerdings zieht diese Gif-Ani die Kontur des Umfeldes mit sich die das Standbild hatte, das sieht dann so aus: http://img377.imageshack.us/img377/5287/buggf0.png ich hoffe mein Problem ist verständlich :angel2: Help me pls :stupid: |
Re: Merkwürdiger Darstellungs Fehler bei gif Animation
Du musst beim Gif-Erstellen darauf achten, dass du das Antialias aus schaltest...
die Kante entsteht durch Pixel, die zwar sehr weiß, aber eben nicht rein-weiß (FFFFFF) sind - ich vermute jetzt mal, dass du weiß wegkeyst über Alpha-Farbe oder? Hoffe geholfen zu haben... |
Re: Merkwürdiger Darstellungs Fehler bei gif Animation
Zitat:
|
Re: Merkwürdiger Darstellungs Fehler bei gif Animation
echt irre der weiße Rand war auch bei mir das erste was ich gesehen habe... :wall:
jetzt aber zu seinem Prob... es sieht so aus als würde er einen teil des ganzen Bildes bewegen und nicht nur das Gif-image.. ein wenig Source-Code könnte die lösungs-findung vereinfachen.... Oh man immer wenn ich online bin sind die herrschaften off :kotz: |
Re: Merkwürdiger Darstellungs Fehler bei gif Animation
hi ihr beiden ich hoffe der source bringt uns weiter, hab ein wenig auskommentiert
Delphi-Quellcode:
procedure TForm1.backgroundClick(Sender: TObject);
begin // x = Mauspos. x := ScreenToClient( Mouse.CursorPos ).X -75; // hier wird überprüft in welche Richtung er laufen muss, (dementsprechend 2 animationen) if x < mainman.left then begin mainman.Picture.LoadFromFile('pics/jaru4.gif'); end; if x > mainman.left then begin mainman.Picture.LoadFromFile('pics/jaru2.gif'); end; timer1.Enabled := true ; timer1.Interval := 1; end; procedure TForm1.Timer1Timer(Sender: TObject); begin // Das Laufen if x < mainman.left then begin mainman.Left := mainman.Left - 5 ; end; if x > mainman.left then begin mainman.Left:= mainman.Left + 5; end; |
Re: Merkwürdiger Darstellungs Fehler bei gif Animation
hmmm... du hast also zwei bilder übereinander und bewegst
nur das aufliegende... der code sieht ok aus, ich würde nur die if abfragen in ein case of umbauen... aber der Bug wird dadurch nicht verschwinden.. eigenartig... :coder2: |
Re: Merkwürdiger Darstellungs Fehler bei gif Animation
Hi, ich geb dir mal ein paar Tipps:
1. Setze das Timer-Intervall nicht unter 50, was defacto ungefähr das kleinste Intervall darstellt. Alles andere gibt nur Probleme, weil es z.B. auf unterschiedlichen Rechnern nicht gleichschnell läuft. 2. Bessere Code-Einrückung 3. Benutze keine TImages für Spiele... ich weiß, die meisten (ich auch) fangen damit an, aber das bringt einen ziemlich shcnell an die Grenzen, und zwar wegen folgendem: Instabilität (wie der Bug bei dir), langsamkeit, Flimmern bei Bewegungen und am wichtigsten: Die ganzen Images sind einfach schlecht zu verwalten. Wenn du jedes einzelne Objekt im Spiel mit einem Image darstellen willst, wirst du niemals fertig, weil du jedes mal den gesamten Code anpassen musst. Alternativen: 1. Zeichne alles selber mit TCanvas und TBitmap, und benutze ein Offscreenbitmap um das Flimmern zu verhindern. das ganze ist recht einfach, in der Geschwindigkeit nicht ganz vorne, aber für deine Zwecke wohl ausreichend. 2. Andorra2D oder eine vergleichbare 2d-Engine: Hier kannst du wie professionelle Spiele die Hardwarebeschleunigung der Grafikkarte benutzen, was optisch und in der Geschwindigkeit Vorteile bringt - Ist allerdings IMO etwas schwieriger zu Handhaben als TCanvas und TBitmap. Dafür hast du hier auch schon einige Tools dabei, um Animationen einzubinden etc... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 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