Zu schnelle Animation
Übersicht

DestyBetreff: Zu schnelle Animation |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Servus bin neu hier und hab eauch gleich mal ein Problem. Habe versucht eine Animation in einer Bewegung darzustellen. Leider ist diese zu schnell. Wie kann ich sie langsamer machen?
Hier mal mein Code Code: [AUSKLAPPEN] Graphics 800,600,16,2 Mann = LoadAnimImage("C:\BB Test\AniTest2.PNG",142,156,0,5) Mann2 = LoadAnimImage("C:\BB Test\AniTest.PNG",142,156,0,5) MaskImage Mann,255,255,255 MaskImage Mann2,255,255,255 SetBuffer BackBuffer() ClsColor 255,255,255 Cls X=400 y=300 ani=0 Repeat Cls If KeyDown(203) Then X=X-1:Ani=Ani+1:If Ani>4 Then Ani=0 B = 1 ;Nach Links ElseIf KeyDown(205) Then X=X+1:Ani=Ani+1:If Ani>4 Then Ani=0 B = 2 ;Nach Rechts EndIf If B = 1 Then DrawImage Mann,X,Y,Ani Flip B = 0 ElseIf B = 2 Then DrawImage Mann2,X,Y,Ani Flip B = 0 EndIf Until KeyDown(1) End THX im vorraus Greetz Desty |
||
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hoi,
willkommen erstmal. du könntest z.b. deine animation nur alle 5 schritte ändern, anstatt bei jedem schritt. das könnte dann so aussehen: Code: [AUSKLAPPEN] If KeyDown(203) Then
X=X-1:if x mod 5 = 0 then Ani=Ani+1:If Ani>4 Then Ani=0 B = 1 ;Nach Links EndIf flip brauchste übrigens nur 1x am ende der mainloop. l8er, psy |
||
![]() |
SpionAtom |
![]() Antworten mit Zitat ![]() |
---|---|---|
die Mod-Operation kann man auch noch weiter nutzen.
Statt Code: [AUSKLAPPEN] X=X-1:if x mod 5 = 0 then Ani=Ani+1:If Ani>4 Then Ani=0
schreibe Code: [AUSKLAPPEN] X=X-1:if x mod 5 = 0 then Ani=(Ani+1) mod 5
Denoch ist diese Methode nicht unbedingt die beste, da sie auf unterschiedlichen Rechnern nicht unbedingt die gleiche Animationsdauer erzielt. Um das zu erreichen, kannst du zb dafür sorgen, dass ein Schleifendurchlauf immer dieselbe Zeit benötigt. |
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
Desty |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vieln Dank für die schnelle Hilfe, haut bei mir alles jetzt soweit hin.
Ich were noch sehr dankbar wenn es eine erklärung gäbe was der Befehl "Mod" nun macht, speziefich in meinem Code. Greetz Desty |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mod bereichnet den Divisionsrest von der Zahl vor dem Mod mit der Zahl nach dem Mod. Es ist also eine "Ganzzahldivision mit Rest".
Nehmen wir als Beispiel 13 und 5: 13 durch 5: 2*5 + 3 -> 13 mod 5 = 3 Aber für die Animation empfehle ich nicht den Mod Ansatz, da es sehr stark von der PC Geschwindigkeit abhängt. Nimm eine Variable in die du dir merkst, wann du das letzte Mal das Bild um eins weiter geschaltet hast. Wenn die Zeitdifferenz (millisecs() - letzterUpdate > X) grösser einem bestimmten Wert ist (X hier), dann wird Anim um 1 erhöht bzw. innerhalb des Mods erhöht und natürlich letzterUpdate wieder aktualisiert. EDITED: So schnell kanns gehen wenn man mit den gedanken schon 2 gleichungen weiter ist. Danke D-Bug ^^ |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
- Zuletzt bearbeitet von Dreamora am Mi, Aug 30, 2006 16:18, insgesamt 2-mal bearbeitet
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: 13 durch 5: 2*5 + 3 -> 10 mod 5 = 3
*verbesser* Zitat: 13 durch 5: 2*5 + 3 -> 13 mod 5 = 3
![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group