Animation und Compilier problem
Übersicht

![]() |
VinzBetreff: Animation und Compilier problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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; |
![]() |
VinzBetreff: THX |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. | ||
![]() |
VinzBetreff: . |
![]() Antworten mit Zitat ![]() |
---|---|---|
weisst du ne gute seite mit tutorials
die robs seite ist dafuer zu wenig. |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. | ||
![]() |
VinzBetreff: . |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
||
![]() |
VinzBetreff: . |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ############### |
||
![]() |
VinzBetreff: Gek. |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ---------------------------------- |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmmm, Grausam ![]() 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 ![]() 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 ![]() und nicht gleich aufgeben, es ist noch kein Meister vom Himmel gefallen ![]() |
||
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK; |
![]() |
VinzBetreff: Ja |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Mogon |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group