Forum

> > Off Topic > BlitzBasic: 2D-Animation
Forums overviewOff Topic overviewLog in to reply

German BlitzBasic: 2D-Animation

5 replies
To the start Previous 1 Next To the start

old BlitzBasic: 2D-Animation

MoonCake
User Off Offline

Quote
Ich habe mir mal an einer 2D-Animation in der BlitzBasic-Demo versucht.

Es funktioniert eigentlich, aber die Animation ruckelt häufig und läuft insgesamt unregelmäßig. Ich denke, dass ich vielleicht die falsche Schleife benutze:

1
2
3
4
5
6
For n = 0 To 100 
DrawImage animationsbild, 50, 50, 0
DrawImage animationsbild, 50, 50, 1
DrawImage animationsbild, 50, 50, 2
usw...
Next

"animationsbild" habe ich dabei außerhalb der Schleife einen Wert zugeteilt (LoadAnimImage).

Liegt es also an der Schleife, oder daran, dass ich nur .bmp's nutzen kann?

old Re: BlitzBasic: 2D-Animation

Lys
User Off Offline

Quote
ehm naja, also for schleife würd ich lassen, packs in die Repeat...Until oder While...Wend schleife.
Desweiteren musst du nur einmal Drawimage machen - jedoch mit entsprechendem frameanhang der sich eigenständig verändert. Also:
1
2
3
4
5
6
7
8
9
10
11
12
While not Keyhit(1) ;Wenn nicht escape dannn wiederhole...

Drawimage animationsbild,50,50,FRAME

if millisecs()>frametimer then
frame=frame+1 mod 2;2 entsprechend nach anzahl der einzelbilder verändern!
frametimer=millisecs()+100
endif

flip
cls
wend

old Re: BlitzBasic: 2D-Animation

MoonCake
User Off Offline

Quote
Ah, vielen Dank. Werd's gleich mal ausprobieren.

Bin halt noch ein blutiger Anfänger

EDIT: Weiß nicht ganz ob ichs richtig gemacht hab... hier ist das ganze Script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Graphics 480, 360
runner_anir = LoadAnimImage("trooprunner1.bmp", 47, 55, 0, 12)

While Not KeyHit(1)

DrawImage runner_anir, 50, 50, 0

If MilliSecs() > frametimer Then 
frame = frame + 1 Mod 12
frametimer = MilliSecs()+100 
EndIf 

Flip 
Cls 
Wend

Bitte nochmal zurückschreiben!

old Re: BlitzBasic: 2D-Animation

Lys
User Off Offline

Quote
soweit richtig aber bei dem
1
DrawImage runner_anir, 50, 50, 0
fehlt hinten die frameangabe, sprich statt 0 muss da frame als variable stehen.
Und nicht vergessen, ein frame fängt bei 0 an, sprich ein bild mit einer frameangabe von 12 hat eigentlich 13 bilder. der fehler passiert immer wieder^^

old Re: BlitzBasic: 2D-Animation

MoonCake
User Off Offline

Quote
Aah, danke. Funktioniert jetzt.
Aber ich hab schon wieder ein Problem:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Graphics 400, 300

If MouseHit(1) Then

	mouse_x = MouseX()	; Cursor-Position x
	mouse_y = MouseY()	; Cursor-Position y
	rect_w = Rnd(20, 50)	; Zufällige Breite des Rechtecks
	rect_h = Rnd(20, 50)	; Zufällige Höhe des Rechtecks

	Color Rnd(50, 255), Rnd(50, 255), Rnd(50, 255) ; Zufällige Farbe des Rechtecks
	Rect mouse_x, mouse_y, rect_w, rect_h
	
EndIf

WaitKey
End

Also ich möchte, dass bei Linksklick an der Stelle des Cursors ein Rechteck mit zufälliger Größe und Farbe gezeichnet wird; dann wird das Programm per Tastendruck beendet. Nur leider funktioniert es einfach nicht.

Nehmt es mir bitte nicht übel, dass ich hier solche Anfängerprobleme poste, aber immerhin ist es ja der Off-Topicbereich

old Re: BlitzBasic: 2D-Animation

Lys
User Off Offline

Quote
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Graphics 800,600,32,2
SeedRnd MilliSecs();damit bei rand was anderes rauskommt


Repeat;schleife
	
	If MouseHit(1) Then
		mouse_x = MouseX()     ; Cursor-Position x
		mouse_y = MouseY()     ; Cursor-Position y
		rect_w = Rand(20, 50)     ; Zufällige Breite des Rechtecks
		rect_h = Rand(20, 50)     ; Zufällige Höhe des Rechtecks
		
		Color Rand(50, 255), Rand(50, 255), Rand(50, 255) ; Zufällige Farbe des Rechtecks
		Rect mouse_x, mouse_y, rect_w, rect_h
		Exit;schleife verlassen bei mausklick
	EndIf
	
Forever

WaitKey()
End

bei graphics würd ich nicht 400,300 verwenden, kann sein, dass das mal nicht funktioniert
To the start Previous 1 Next To the start
Log in to replyOff Topic overviewForums overview