gelöst : Mehrere keydown+entsprechende Animationen zuordnen
Übersicht

ProgBetreff: gelöst : Mehrere keydown+entsprechende Animationen zuordnen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo,
wenn ich die zweite Kombination benutze dann werden irgend wie beide Bedingungen ausgeufert :/ kann man das beheben? zb: Code: [AUSKLAPPEN] ;up
If KeyDown(200) Then Cls frame = frame + 1 DrawImage bild[frame],0,0 Delay 150 If frame = 8 Then frame = 0 Flip EndIf ;up and r If (KeyDown(200) And KeyDown(205)) Then Cls frame = frame + 1 DrawImage bild_x1[frame],0,0 Delay 150 If frame = 8 Then frame = 0 Flip EndIf Prog |
||
- Zuletzt bearbeitet von Prog am Mo, Nov 21, 2011 21:39, insgesamt 2-mal bearbeitet
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zuerst ist es hilfreich, Code einzurücken.
Dann fällt auch auf, dass natürlich beide Teile ausgeführt werden, wenn Oben UND Rechts gedrückt wird, da ja Oben definitiv immer gedrückt wird. Richtig wäre es so: BlitzBasic: [AUSKLAPPEN] If KeyDown(200) Then |
||
- Zuletzt bearbeitet von PacMani am Di, Nov 15, 2011 19:04, insgesamt 2-mal bearbeitet
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was genau meinst du mit "ausgeufert"? Wird nichts ausgeführt, stürzt das Programm ab (Fehlermeldung?), gibt es Compilerfehler?
Auf jeden Fall setzt du bei der zweiten If ![]() BlitzBasic: [AUSKLAPPEN] If KeyDown(200) And KeyDown(205) Then Außerdem kann man Code einrücken, besonders wenn man will, dass sich ihn jemand anders durchliest. Vom Befehl Delay lässt du bitte die Finger, siehe hierzu https://www.blitzforum.de/foru...hp?t=33684. ZEVS |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was exakt möchtest du tun? Dem Code nach sieht es nach Animation aus - und da solltest du als erstes Delay komplett vergessen und nur 1x Flip benutzten. Ansonsten handelst du dir in Zukunft schnell Probleme ein.
Für Tasten-Kobinationen sind ein paar Variablen wohl gut geeignet um die Eingaben korrekt zu interpretieren - da reicht ein If nicht aus. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Lakorta |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde dir raten, die Ergebnisse von KeyDown() und/oder KeyHit() zwischenzuspeichern.
z.B. Code: [AUSKLAPPEN] KeyHit_ESC = KeyHit(1) KeyDown_Leertaste = KeyDown(57) Dieses dann immer am anfang der Hauptschleife und dann prüfen, ob diese Werte 1 entsprechen: BlitzBasic: [AUSKLAPPEN]
~EDITIERT~ Syntax-box und Codetag vertragen sich nicht - korrigiert. Xeres |
||
--- |
Prog |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@pac-man danke ich werde es mal ausprobieren ![]() ![]() @zevs ausgeufert = ausgeführt sorry ![]() @Xeres ja es handelt sich um Animation ![]() ![]() @Lakorta originell ![]() |
||
Prog |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Pac-Man hat Folgendes geschrieben: Zuerst ist es hilfreich, Code einzurücken.
Dann fällt auch auf, dass natürlich beide Teile ausgeführt werden, wenn Oben UND Rechts gedrückt wird, da ja Oben definitiv immer gedrückt wird. Richtig wäre es so: BlitzBasic: [AUSKLAPPEN] If KeyDown(200) Then Pac-Man frage ![]() und wenn ich noch eine dritte Variante einfügen mochte? Zb: momentan geht nur up , up R und wenn ich up L einfügen mochte? Habe es mit elseif versucht aber da klappt was nicht O.o |
||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was klappt denn da nicht?
BlitzBasic: [AUSKLAPPEN] If KeyDown(205) Then Vielleicht solltest du bei diesen Unsicherheiten noch mal ein Grundkenntnis-Tutorial durchlesen ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Prog: Mit dem Zitieren ganzer Beiträge und Doppelpost machst du dich unbeliebt. Bitte Editiere Beiträge, falls du etwas hinzu zu fügen hast.
Danke. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Prog hat Folgendes geschrieben: @zevs ausgeufert = ausgeführt sorry
![]() Zentraler Artikel: https://www.blitzforum.de/foru...hp?t=25242 Du kannst hierfür individuelle Timer verwenden, die du entsprechend startest und stoppst (CreateTimer ![]() ![]() ![]() ![]() ![]() ![]() ZEVS |
||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
WaitTimer![]() |
||
Prog |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@zeres sorry :S für den Doppelpost ich glaube dass war ein klick zu viel ![]() danke noch mal an alle morgen lese ich mir alles nochmals durch und schreibe alles von vorne und diesmal rücke ich den Code mal ein ![]() melde mich morgen ![]() |
||
Prog |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Moin ![]() habe alles von vorne geschrieben und nun geht die Steuerung ![]() P.S: ich poste den Code mal , wenn ihr vorschlägt habt so wie Code einzurücken, Verbesserungen usw. würde ich mich freuen ![]() BlitzBasic: [AUSKLAPPEN]
@xeres ich hab´s vergessen sorry :S |
||
![]() |
BaseTH |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Prog,
Habe da einen Vorschlag und eine Frage. - den Maskimage-Befehl würde ich immer vor die Hauptschleife setzen da dieser dann nur einmal ausgeführt werden muss, der Befehl ist auch für animierte Bilder nutzbar. - findest du deinen frameTimer mit 18 fps nicht etwas gering? Gruß, BaseTH |
||
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du rückst ein - das ist gut. Aber an einigen Stellen rückst du noch falsch ein ![]() Hier nur ein Beispiel: BlitzBasic: [AUSKLAPPEN]
Richtig wäre es so: BlitzBasic: [AUSKLAPPEN]
Tip: Benutz IDEal anstatt den grässlichen Blitz-Editor. IDEal rückt für dich größtenteils automatisch ein - und benutzt anstatt des Tab-Zeichens gleich 4 Leerzeichen, was das Bearbeiten einfacher macht ![]() |
||
Prog |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo BaseTH,
nun ich habe es auch versucht den frametimer etwas hoher einzustellen aber da flitzte die Animation :/ zu sehr, für den Maskimage-Befehl, habe ich selbst versucht ob er besser vor der Haupt schleife ginge aber vergebens Fehlermeldung :/, „Image does not exist“ ich lade meine Bilder so: „noob style“ BlitzBasic: [AUSKLAPPEN]
|
||
Prog |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Pac-Man hat Folgendes geschrieben: Du rückst ein - das ist gut. Aber an einigen Stellen rückst du noch falsch ein
![]() danke ![]() ![]() |
||
![]() |
BaseTH |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Prog,
vielleicht helfen dir der folgende Tipps. - Die Bilder vor der Hauptschleife laden. - Den Maskimage-Befehl erst danach anwenden denn das Bild muss erst geladen sein. - die Namen der Bilddatein würde ich je nach Anwendungszweck benennen bei vielen Bilder wird es sonst schwer mit z.B. "n0000.bmp", denn die Übersicht leidet sehr bzw. ist später nicht mehr gegeben. - Je mehr Frames du hast desto kleiner müssen die Aktualisierungabstände deiner Werte werden. Bei 10 Frames z.B. X = X + 4 Bei 20 Frames z.B. X = X + 2 Achja und das mit den Doppelpost würde ich lassen da dieses nicht gerne gesehen wird. ![]() Gruß, BaseTH |
||
Prog |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@BaseTH
Also wenn der MaskImage-Befehl mir die Fehler Meldung gibt, heißt das, das jeder einzelnes Array nur die Adresse beinhaltet zu jeden Frame richtig? Also wenn ich noch jedes einzelne Bild laden muss und nochmals den MaskImage-Befehl zu jedes Bild aufrufen muss....... wow :S 500 Zeilen pur-coding. Aber das bringt mich auf eine Idee ist es nicht besser DrawImageRect-Befeh zu benutzen? Und einzelne frame´s mit Paint oder mit ein selbst gebastelten Prog zusammen fügen? Das würde die Code Übersicht erleichtern oder :/? und man könnte auch RAM sparen glaube ich, wie meist du das mit: Zitat: - Je mehr Frames du hast desto kleiner müssen die Aktualisierungabstände deiner Werte werden.
Bei 10 Frames z.B. X = X + 4 Bei 20 Frames z.B. X = X + 2 dass wird mein Untergang sein ![]() Zitat: Achja und das mit den Doppelpost würde ich lassen da dieses nicht gerne gesehen wird.
Grüße Prog |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erst mal grundsätzlich: Flip(0) & Waittimer benutzen ![]() Wenn es um die Animation an sich geht, bastelst du dir einen Timer mit Millisecs ![]() "Image does not exist" bedeutet: Das Bild konnte nicht geladen werden (du hast dich bei der Pfadangabe vertippt oder irgendwas anderes ist schief gelaufen) - wenn der Fehler bei MaskImage auftritt, dann auch bei jeder anderen Stelle, an der du versuchst, auf das Bild zu zugreifen. Frames sind Unterteilungen in einer Bilddatei - die kann BB dir automatisch verarbeiten, siehe LoadAnimImage ![]() Code: [AUSKLAPPEN] Local bild[8], i
For i=0 To 8 bild[i]=LoadImage("läuft"+i+".bmp") If bild[i]=0 Then RuntimeError("Bild 'läuft"+i+".bmp' konnte nicht geladen werden!") MaskImage bild[i], [...] Next |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group