Animation und Compilier problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Vinz

Betreff: Animation und Compilier problem

BeitragMi, Feb 09, 2005 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ich bin ueber den anfaengertutorials und stecke bei den animationen fest.

ersteinmal mein code:

------------------------------------------------------
Graphics 640, 480
SetBuffer BackBuffer()

bildvariable = LoadImage("bild.bmp")
DrawImage bildvariable, 0, 0


bildvariable1 = LoadImage("Person1.bmp")
;bildvariable1 = LoadAnimImage("Person.bmp", 150, 300, 0, 3)
MaskImage bildvariable1, 255, 0, 255
DrawImage bildvariable1, 0, 160
;DrawImage bildvariable1, 0, 160, 1


WaitKey
End
----------------------------------------------

Der code funktioniert zufaelligerweise.
entweder er gibt alles so aus wie ich es moechte (hintergrund, person)
oder nur den Hintergrund
oder gar nix (schwarz)
wenn ich auf Run klicke und es kommt nurmueel und mache es nochmal kommt dann evtl. das richtige ergebniss raus.

1. Frage: Warum geht das nicht immer beim ersten mal?

------------------------------------------------

Verstehe ich das richtig das wenn ich 3 einzelbilder habe das ich diese in EINER bmp.datei nebeneinander legen muss + die maase?
Mein code funktioniert leider nicht beim versuch einer animation zu erhalten obwohl der code vollstaendig sein muesste oder nicht?
 

D²O

BeitragMi, Feb 09, 2005 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Du hast ja Backbuffer aktive,
alles was Du zeichnest ist in diesem Buffer.
Wenn Du das Programm im Fenster (Debug) laufen läst wird der Buffer Flip von Windows erzwungen.
Im Vollbild wirst du nur Deinen schwarzen hintergrund sehen Smile

Schau Dir mal die befehle "Flip" UND "Cls" an.


Code: [AUSKLAPPEN]
Graphics 640, 480
SetBuffer BackBuffer()

bildvariable = LoadImage("bild.bmp")
DrawImage bildvariable, 0, 0


bildvariable1 = LoadImage("Person1.bmp")
;bildvariable1 = LoadAnimImage("Person.bmp", 150, 300, 0, 3)
MaskImage bildvariable1, 255, 0, 255
DrawImage bildvariable1, 0, 160
;DrawImage bildvariable1, 0, 160, 1
flip ;<---------Anschauen
cls;<------- jetzt eigendlich nicht nötig, aber in einer schleife

WaitKey
End
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;

Vinz

Betreff: THX

BeitragMi, Feb 09, 2005 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Thanks, jetzt gehts zumindest mit der darstellung
weisst du ob ich die bilder alle nebeneinander in eine BMP speichern muss um das animieren zu koennen das wird nirgendswo erwaehnt.

skey-z

BeitragMi, Feb 09, 2005 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
soweit ich das weiß, können die einzelnen Bilder nebeneinander, unternander oder auch in mehreren zeilen seien, dazu müssen nur die parameter der loadanimimage() angepasst werden.

Vinz

Betreff: .

BeitragMi, Feb 09, 2005 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
weisst du ne gute seite mit tutorials
die robs seite ist dafuer zu wenig.

skey-z

BeitragMi, Feb 09, 2005 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe das Buch "Spiele programmieren mit Blitz Basic", da schaue ich zuerst nach, wenn ich auf ein problem stosse, steht es da niht drin, schaue ich auf Blitzbase die onlinehilfe an, wenn ich da nichts finde gehe ich hier ins Forum.

Vinz

Betreff: .

BeitragMi, Feb 09, 2005 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Onlinehilfe Robs-tut is zu wenig
die onlinehilfe zum downloaden ist nix fuer mich da hier downloads geblockt werden.
Buecher ist auch schlecht daher ich derzeit im ausland bin.

Vinz

Betreff: .

BeitragMi, Feb 09, 2005 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich bin auf jeden fall schon mal weitergekommen

Das problem ist jetzt das ich einen Hintergrund habe und darueber die animation laufen lassen moechte, Ich hoffe das es irgendwie moeglich ist das hintergrundbild fest speichern zu koennen so das sich nur die animation veraendert.

Leider habe ich kein komando dafuer gefunden

1.Problem: Bis jetzt baut sich das Hintergrundbild mit jeder animation neu auf und das ist sicherlich schlecht da man es sehen kann wie sich das bild aufbaut.

2.Problem: die animation ueberschneidet sich und loscht sich nicht (ich weiss komando hierfuer ist cls aber das fuerht auch zum loeschen des hintergrundes)

Ich glaube ihr habt mehr ahnung und hoffe ihr koennt mir helfen
THX.

auskommentierte zeilen nicht beachten
Code:
########################


Graphics 640, 480
SetBuffer BackBuffer()

;Hintergrund
Hintergrund = LoadImage("bild.bmp")
DrawImage Hintergrund, 0, 0

;Person
Person = LoadAnimImage("Person.bmp", 150, 300, 0, 3)
MaskImage Person, 255, 0, 255

;DrawImage Person, 0, 160, 0
;Flip
;solange nicht esc gedrueckt wird

While Not KeyHit(1)

; solange Button_rechts gedrueckt wird

;If KeyDown(205) = 1 Then
;Print "hallo"
While KeyDown(205) = 1
;DrawImage Hintergrund, 0, 0
DrawImage Person, 0, 160, 0
Flip
;Cls
Delay 100
;DrawImage Hintergrund, 0, 0
DrawImage Person, 0, 160, 1
Flip
;Cls
Delay 100
;DrawImage Hintergrund, 0, 0
DrawImage Person, 0, 160, 2
Flip

Wend
;------------------------------------------------
;If KeyDown(205) = 1 Then

;If Person = 0 Then person = person+1
;Delay 500
;If Person = 1 Then person = person+1
;Delay 500
;If Person = 2 Then person = person0
;Delay 500
;EndIf

;------------------------------------------------
;Delay 500
;Cls

;DrawImage Hintergrund, 0, 0
;DrawImage Person, 0, 160, 1
;Flip
;Delay 500
;Cls

;DrawImage Hintergrund, 0, 0
;DrawImage Person, 0, 160, 2
;Flip
;Delay 500
;Cls
;SetAnimTime entity, 0

;Flip
;------------------------------------------------

;End If

Wend

End




###############

Vinz

Betreff: Gek.

BeitragMi, Feb 09, 2005 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Sry der code ist viel zu lang
hier die gekuerzte fassung:

--------------------------------------
Graphics 640, 480
SetBuffer BackBuffer()

;Hintergrund
Hintergrund = LoadImage("bild.bmp")
DrawImage Hintergrund, 0, 0

;Person
Person = LoadAnimImage("Person.bmp", 150, 300, 0, 3)
MaskImage Person, 255, 0, 255

;solange nicht esc gedrueckt wird

While Not KeyHit(1)

; solange Button_rechts gedrueckt wird

While KeyDown(205) = 1
DrawImage Person, 0, 160, 0
Flip
Delay 100
DrawImage Person, 0, 160, 1
Flip
Delay 100
DrawImage Person, 0, 160, 2
Flip

Wend

Wend

End
----------------------------------

BladeRunner

Moderator

BeitragMi, Feb 09, 2005 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutz bitte die Codetags, dann ist dein Code besser zu lesen.

Zu deinem Problem:
Niemals mehrere Flip im Code benutzen. das ist seeeehr böse
benutze einen Timer (siehe OnlineHilfe) zur Animation oder (noch besser) mach Dir deinen eigenen mit millisecs(). Mit der Forensuche solltest du dazu genügend Hilfe finden.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

D²O

BeitragMi, Feb 09, 2005 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm, Grausam Wink

Mach mal So.
Code: [AUSKLAPPEN]

Graphics 640, 480
SetBuffer BackBuffer()

;Hintergrund
Hintergrund = LoadImage("bild.bmp")


;Person
Person = LoadAnimImage("Person.bmp", 150, 300, 0, 3)
MaskImage Person, 255, 0, 255
global person_ani = 0

;solange nicht esc gedrueckt wird

While Not KeyHit(1)

; solange Button_rechts gedrueckt wird



if Keydown(205 )
    person_ani = person_ani + 1
       if person_ani > 2 then person_ani = 0
endif


Drawimage hintergrund,0,0
DrawImage Person, 0, 160, person_ani

Flip
cls



Wend

End


Die animation wird jetzt ziemlich schnell sein Twisted Evil

Schau Dir Timer, millisecs befehle an,
Such im Forum nach, z.b fsp counter oder Frame unabhängiges Programieren, dann wirst Du sehr schnell feststellen wie Du über einen Timer die animation steuern kannst.

Mit dem hintergrundbild, schau und such mal nach sachen wie Imagebuffer Wink

und nicht gleich aufgeben, es ist noch kein Meister vom Himmel gefallen Smile
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;

Vinz

Betreff: Ja

BeitragMi, Feb 09, 2005 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin schon am suchen von Timer und millisecs die beisspiele sind gut aber um das wieder irgendwo einzubauen ist wieder schwierig

Danke fuer eure hilfe, weiter fragen werden folgen Twisted Evil
 

Mogon

BeitragDo, Feb 10, 2005 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Also:

Du musst erstmal, natürlich außerhalb der Schleife folgendes schreiben:

Code: [AUSKLAPPEN]
timer = CreateTimer(x)
wobei du als x die gewünschte fps-Zahl eingeben musst.

Dann musst du in der Hauptschleife irgendwo

WaitTimer timer hinschreiben, damit der Timer auch zur Anwendung kommt.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group