animation

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

roaches

Betreff: animation

BeitragDo, Feb 12, 2004 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
tach,

bin, immer noch, BB-anfänger und hab ein problem mit dem
loadanimimage befehl.

in robskurs steht, man muss ein bitmap (.bmp) mit mehreren frames machen. wie erstell ich sowas? oder gibt es ne andere lösung für eine spriteanimation ?

Holzchopf

Meisterpacker

BeitragDo, Feb 12, 2004 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz einfach:
Ein Bild mit mehreren Frames (so wie man es für LoadAnimImage braucht) ist eigentlich nichts weiteres, als das gesamt-Bild aller aneinander gehängter einzelbilder.

Nun zum mitbasteln:
Nehmen wir also mal an, du willst einer Figur eine einfache Laufanimation zufügen, die Figur selber benötigt ein Feld von 20x20Pixeln, die Laufanimation benötigt zwei Frames (Einzelbilder). Also erstellst du in Paint ein Bild mit den abmassen 40x20Pixeln, in die linke Hälfte (erster Frame) zeichnest du die Figur wie sie die Beine zusammen hat, in der rechten Hälfte zeichnest du sie mit den Beinen in Schrittstellung.
(wenn du mehrere Frames brauchst kannst du natürlich nicht von der Hälfte ausgehen)

Die genaue Beschreibung zu LoadAnimImage findest du auf www.blitzbase.de, mithilfe dessen, solltest du es eigentlich selber schaffen, die Animation zu laden und abzuspielen...

MfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

roaches

BeitragDo, Feb 12, 2004 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
leider nicht ganz.

das bitmap ist erstellt. nur wie werden jetzt die zwei frames immer abwechselnd dargestellt?

drawimage datei, x, y, ????

was soll ich anstatt der ??? eingeben ?
funktioniert das ganze etwa nur in einer schleife und 0 wäre erstes frame, 1 zweites frame ?

Holzchopf

Meisterpacker

BeitragDo, Feb 12, 2004 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hei du bist gut 8)

Ja es braucht eine Schleife, und ja, 0 bedeutet erstes Frame, 1 zweites Frame.

DrawImage bild, x, y, frame

Um die variable frame ständig zwischen 0 und 1 zu 'switchen' kannst du einfachCode: [AUSKLAPPEN]
 frame = 1 - frame
in die Schleife schreiben.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

roaches

BeitragDo, Feb 12, 2004 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
coole sache, jetzt bin ich wieder meilen schlauer Wink
thx
 

roaches

BeitragDo, Feb 12, 2004 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, hörte sich einfach und verständlich an.

aber nachdem ich das in meinen code eingefügt hab, funktionierte nix mehr bzw. nichts mehr/bzw. nicht alle sprites waren zu sehen.

das einzel bild hat die masse 22*27 pixel, es gibt zwei frames.
also hab ich die zwei nebeneinander in einer png.datei positioniert, die datei hat also die masse 44*27.
lautet der richtige befehl jetzt

ball=LoadAnimImage("ball.png",22,27,0,1)

oder

ball=LoadAnimImage("ball.png",44,27,0,1)

?

Das Ganze funktioniert auch wie gewohnt.
Erst wenn ich bei den befehl

DrawImage ball, xb, yb

um frame ergänze (DrawImage ball, xb, yb, frame)

geht nix mehr.

TheShadow

Moderator

BeitragDo, Feb 12, 2004 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
steht in hilfe
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

roaches

BeitragDo, Feb 12, 2004 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
22,27 also Wink

und wieso macht dann jetzt der drawimage befehl probleme ??


hier mal der code:


.spiel

frame=1-frame

If KeyHit(1)=1 Then End

Cls
Locate 20,60
Print name$

Locate 20,440
Print MillisecsToTime$(zeit)


ende=MilliSecs()
zeit=ende-start

Locate 580,60
Print name2$

Locate 20,30
Print punkte1

Locate 580,30
Print punkte2

Locate 500,440
Print "Zufallszahl: "+ulf

Locate 500,460
Print "Ballspeed: "+sb

DrawImage linie1,1,75
DrawImage linie2,1,405

Locate 5,420

DrawImage titel2,120,410

DrawImage titel,215,15

Flip

speed=speed+1
If speed>500 And ImagesCollide (paddle2,x2,y2,0,ball,xb,yb,0) Then sb=sb+1
If speed>500 And ImagesCollide (paddle2,x2,y2,0,ball,xb,yb,0)Then speed=0

If KeyDown(42)=1 Then pl=3
If KeyDown(82)=1 Then pr=3

If KeyDown(30)=1 Then y1=y1-(5+pl)
If KeyDown(44)=1 Then y1=y1+(5+pl)
If KeyDown(30)=1 And ImagesCollide (paddle1,x1,y1,0,ball,xb,yb,0) Then xv=2
If KeyDown(44)=1 And ImagesCollide (paddle1,x1,y1,0,ball,xb,yb,0) Then xv=2

If KeyDown(200)=1 Then y2=y2-(5+pr)
If KeyDown(208)=1 Then y2=y2+(5+pr)
If KeyDown(200)=1 And ImagesCollide (paddle2,x2,y2,0,ball,xb,yb,0) Then xv=2
If KeyDown(208)=1 And ImagesCollide (paddle2,x2,y2,0,ball,xb,yb,0) Then xv=2

ulf=Rand(1,5)

If y2>347 Then y2=347
If y2<80 Then y2=80
If y1>347 Then y1=347
If y1<80 Then y1=80

If directory=1 Then xb=xb+(5+sb)
If directory=2 Then xb=xb-(5+sb)

If directoryball=1 Then yb=yb+(3+xv)
If directoryball=2 Then yb=yb-(3+xv)



DrawImage hanf,220,120
DrawImage paddle1,x1,y1
DrawImage ball, xb, yb, frame
DrawImage paddle2, x2,y2

Flip

If ImagesCollide (paddle1,x1,y1,0,ball,xb,yb,0) Then directory=1
If ImagesCollide (paddle2,x2,y2,0,ball,xb,yb,0) Then directory=2

If ImagesCollide (paddle1,x1,y1,0,ball,xb,yb,0) Then PlaySound(ping)
If ImagesCollide (paddle2,x2,y2,0,ball,xb,yb,0) Then PlaySound(ping)

If ImageRectOverlap (ball,xb,yb,1,405,640,5) Then directoryball=2
If ImageRectOverlap (ball,xb,yb,1,75,640,5) Then directoryball=1

If xb<1 Then Gosub Tor2
If xb>640 Then Gosub tor1



If punkte1=10 Then Gosub ende
If punkte2=10 Then Gosub ende
If ImagesCollide (paddle1,x1,y1,0,ball,xb,yb,0) Then xv=0
If ImagesCollide (paddle2,x2,y2,0,ball,xb,yb,0) Then xv=0
pl=0
pr=0
If KeyHit(25)=1 Then Gosub pause

Gosub spielCode: [AUSKLAPPEN]
Code: [AUSKLAPPEN]
Code: [AUSKLAPPEN]
 

roaches

BeitragDo, Feb 12, 2004 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
entferne ich das frame aus der oben fett gedruckten zeile
so funktioniert alles bestens.
lass ich die variable frame stehen, wird nichts mehr richtig angezeigt, ausser der textzeilen wie spielername, punkte usw.
 

roaches

BeitragDo, Feb 12, 2004 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
nachdem ich aus der .png datei eine bmp gemacht hab funktioniert alles soweit ganz gut, nur dass das zweite frame nicht angezeigt (schwarzer fleck).

weiss keiner rat ?

Blatolo

BeitragFr, Feb 13, 2004 7:40
Antworten mit Zitat
Benutzer-Profile anzeigen
besitzt du nur die Demoversion?
Die kann nämlich nur bmp.
Aber ich seh in deinem code kein loadanimimage.
aber wenn du das meinst was du oben gepostet hattest, dann liegt der Fehler darin dass du wohl angenommen hast dass der letzte Parameter für den endframe steht aber er steht für die anzahl der frames, also musst du ne 2 angeben statt einer 1.
 

roaches

BeitragFr, Feb 13, 2004 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hattest recht, es lag an der verwechslung des letzten parameters.
mit zwei läufts Wink
thx

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group