Animationen
Übersicht

Gehe zu Seite Zurück 1, 2, 3 Weiter
BlackCat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Johann der 2. hat Folgendes geschrieben: Ja das ist mir klar nur wie mach ich das das wenn diwe animation eine bewegung des strichmanns war wie stell ich ein das er jetzt woanders steht?
Also wie schaff ich es das ein bild durch eine animation auf knopfdruck nach rechts geht? also wie kann ich mir eine steuerung machen das der strichmann von links nach rechts geht undso? Du pruefst, ob der User, die Rechts-Taste gedrueckt halt (KeyDown()). Wenn dies zutrifft, erhoehst du die X-Koordinate bei jedem Hauptschleifendurchgang um eine bestimmte Zahl. Bei dem Sprite selbst brauchst du nur eine "Standbewegung", also praktisch dass das Strichmaennchen immer nur im Stand laufen wuerde, wuerde man die Animation ohne x und y-Veraenderung laufen lassen... |
||
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke du bist nett und einen Grundkurs nicht so wirklich nur Robs BB-Kurs 2. | ||
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was heißt es wenn er mir dann die fehlermeldung bringt: " Image frame out of range" ? | ||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das heist das du bei drawimage einen zu hohen frame zeichners, also drawimage name,x,y,frame
Der Frame ist das Xte stückchen bild das du zeichnest. Und wen der zu gross ist also zmb 4 und das bild jedoch nur 3 hat, kommt dieser fehler drum hab ich ja den begrenzer eingebaut Code: [AUSKLAPPEN] If frame>5 Then frame=0 ;damits ned grösser wird als 5
setz anstant 5 mal 4 ein und gug was passiert ![]() ja mit grundkurs meinte ich den kurs von robsite ![]() ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
achso ich probiers mal aus | ||
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber jetzt schlägt er wieder die ganze Zeit ich wollte eigentlich das er nur einamal schlägt aber ich mus mich echt bei dir bedanken du hast mich ziemlich weiter gebracht. DANKE ![]() |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vermeide doppelposts, benutz die editier funktion ![]() Freut mich das ich helfen konnte, doch der Lerneffekt ist grösser wen du selber dran rumrästelst, aber ich helf dir ein wenig auf die sprünge ^^ Code: [AUSKLAPPEN] Graphics 640, 480 ;Grafik Modus einstellen
SetBuffer BackBuffer () bild = LoadImage("strichmanns.bmp") ; Bild laden ja =LoadAnimImage ("bild.bmp",100, 136, 0, 5) ; Billd2 laden WaitKey DrawImage bild,0,0 While Not KeyHit(1) ;Anfang der schleife Cls ; den bildschrim frei machen/ löschen If KeyHit(28) ; wenn enter startdraw=1 EndIf If KeyHit(205) Then x=x+5 ;wen du pfeiltaste rechts drückst soll x grösser werden If startdraw=1 and gemacht=0 ;wenn enter gedrückt wurde (siehe oben) und die animation noch nicht gemacht wurde If MilliSecs()> time + 100 ;wenn die akktuelle zeit grösser ist als time + 100 ms time=MilliSecs() ;time soll die akktuelle zeit annehmen frame=frame+1 ;der frame wird um 1 erhöht If frame>4 frame=0 ;damits ned grösser wird als 5 gemacht=1 ; hier wird gemacht auf eins gesetzt, also wenn die ganze animation einmal durchgelofen is EndIf DrawImage ja,x,0,frame ; du malst den typ auf pixel x und is wird ja bekantlich grösser also geht der nach rechts EndIf Flip Wend End So wird die animation einmal auf enter ausgeführt und dann nicht mehr, aussert du setzt die variable "gemacht" wieder auf 0 Versuch jetzt selbst ein wenig darum zu basteln, zmb das man auch rauf un runter laufen kann,und wenn du wirklich nicht weiter kommst, post dein Problem einfach ![]() mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
FreetimeCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du brauchst 2 verschiedene Animations-Zustände:
Pseudo Code: [AUSKLAPPEN] wenn KnopfDruck
dann Anim = Schlag Frame = 0 Zeichnen(Frame) Frame = Frame + 1 Wenn Frame > 4 Und Anim = Schlag dann Anim = SonstAnimation Wenn Frame > 10 dann Frame = 4 Ich gehe mal davon aus das der Strip 11 Frames hat 0-10. 0-3 fürs Schlagen und 4-10 für eine andere Animation die nur abgespielt werden soll wenn die Figur nicht schlägt. Wenn die Schlagentaste gedrückt wird, wird "Anim" ein Wert zugewiesen damit das Programm weiß das es jetzt nur die Frames der Schlagenanimation abspielen soll. Ist diese abgespielt wird "Anim" wieder zum Standardwert der dem Programm sagt, dass es zb die Idleanimation abspielen soll. MfG [edit] verdammt zu langsam xD |
||
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte: Dexterity Ball (100%) Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz (ehemals Uboot) PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA |
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke ihr beiden und ozzi ich weiß das der lerneffekt dabei runter geht nur von nichts kommt nichts ich will meinen wenn ich es nichtr weiß kann ich es auch nicht errätseln da ich auch erst vor 3 wochen angefangen hab und nicht jeden tag geproggt.
Edit: Jetzt kann ich diesen shclag aber nur einmal ausführen wollte es eigentlich so das ich die taste immer wieder drücken kann und er dann immer dann schlägt wenn ich drücke wie geht das? Edit2: Ach ich bastel erstmal ein bisschen rum. Edit3: `Was bedeutet die Fehlermeldung: "Expecting end-of-file"? Edit4: so hab mal versucht es so zu machen das ich das mänchen bewegen kann nur wie mach ich das das das programm sich nicht vorher beendet? hier der code:Zitat: Graphics 640, 480 ;Grafik Modus einstellen
SetBuffer BackBuffer () bild = LoadImage("strichmanns.bmp") ; Bild laden If KeyHit (208) Then y=y+5 If KeyHit (205) Then x=x+5 If KeyHit (203) Then x=x-5 If KeyHit (200) Then y=y-5 DrawImage bild, x, y ích mus jetzt in bett hoffe ihr läst das noch für mich und entschuldigt wenn ich ein bisschen auf die nerven gehe. gn8 Edit5: ozzi aber die animation wir bei deinem text nicht ausgeführt da zeigt er einfach nur den frame 4 an. na dann wirklich gn8 |
||
- Zuletzt bearbeitet von Johann der 2. am Do, Okt 23, 2008 22:12, insgesamt 3-mal bearbeitet
BlackCat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Johann der 2. hat Folgendes geschrieben: Edit: Jetzt kann ich diesen shclag aber nur einmal ausführen wollte es eigentlich so das ich die taste immer wieder drücken kann und er dann immer dann schlägt wenn ich drücke wie geht das? Wenn ich dich richtig verstanden habe, dann musst du die Funktion KeyHit() einfach nur durch KeyDown() ersetzen (Parameter bleibt der gleiche) |
||
![]() |
FreetimeCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Packe die ganzen Dateien doch mal in eine zip und lads im Archiv hoch, vllt sehen wir dann was dir so große Probleme macht.
MfG |
||
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte: Dexterity Ball (100%) Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz (ehemals Uboot) PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zu edit 4
Das Zauberwort heist While, also ne schleife ![]() Erläuterung : Das Programm läuft von oben nach unten ab und wenn es unten angekommen ist, ist es fertig ! Wie verhinder ich das ? In dem ich das ganze in ne Schleife packe Also Code: [AUSKLAPPEN] Graphics 640, 480 ;Grafik Modus einstellen
SetBuffer BackBuffer () bild = LoadImage("strichmanns.bmp") ; Bild laden while not keyhit(1) ;während du nicht ESC drückst cls ;löscht den Bildschrim, kannst es ja mal weglassen und du siehst was passiert If KeyHit (208) Then y=y+5 If KeyHit (205) Then x=x+5 If KeyHit (203) Then x=x-5 If KeyHit (200) Then y=y-5 DrawImage bild, x, y flip ; vertauscht den Buffer, kümmer dich nicht drum, wirst du dan schon verstehn ;) wend ; soll es alles zwischen WHILE und WEND wiederholen Das "allgemeine" Grundgerüst einer jeden Grafikanwendung/Games ist Code: [AUSKLAPPEN] Graphics länge,breite,farbtiefe,modus (1= Vollbild, 2= Fenster) Setbuffer backbuffer() Loadimage ; Bilder laden While not keyhit (1) ;Schleife beginnen cls Eigentliches Game , If's usw Flip wend end mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke ich komm meinem kleinem Ziel immer näher nur was heißt die Fehlermeldung:'Wend'. ? | ||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann nicht hellsehn, gib mir die zeile die der debugger markiert ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
die fehlermeldung heißt warscheinlich while whitout wend..
du scheinst eine if bedingung oder eine for schleife nicht "beendet" zu haben sprich endif oder next oder etwas dergelichen vergessen(oder tippfehler) |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Btw Ozzi dein Code ist zum kotzen, lern einrücken.
Johann der 2.: Du könntest mal den Code zeigen, das wäre net. ^_^ MfG |
||
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
The_Nici momentan verändere ich den code weil ich an einem problem arbeite deshalb wäre es jetzt nicht so effektiv ihn etzt zu posten da er sich jetzt sehr schnell verändert. | ||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann können wir dir nicht helfen. | ||
Johann der 2. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Doch naja jetzt wie kann ich functionen laden also mit include bei mir funkt das net wie mus es richtig heißen wenn ich eine Function laden und ausführen will?
Hier der Functions Code:Zitat: Function gehen ()
Graphics 640, 480 strichmann= LoadImage ("strichmanns.bmp") If KeyHit (208) Then y=y+5 If KeyHit (205) Then x=x+5 If KeyHit (203) Then x=x-5 If KeyHit (200) Then y=y-5 DrawImage strichmann, x,y End Function Die Datei heißt "gehen.bb" wie kann ich diese nun laden und ausführen in einem anderen code? |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Include![]() Btw Laden am Anfang, zeichnen in der Schleife. |
||
Gehe zu Seite Zurück 1, 2, 3 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group