MilliSecs()

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Tauben-Ripper

Betreff: MilliSecs()

BeitragDo, Jan 05, 2006 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab des jetzt mit dem MilliSecs() versucht, aber überhaupt keine ahnung wie ich des bei mir einbauen muss und so...plz help für einen nap!!

ups..hab außversehen ein neuen thema aufgemacht.. sorry

Hi! Bei meinem code, habe ich folgendest problem:

durch das delay, verzögert sich alles und wenn ich es weglasse flimmert die maus und mein bild "b" wird viel zu schnell abgespielt. Könnt ihr mir helfen?

Code: [AUSKLAPPEN]
Include "confic.bb"

a=LoadImage("images/11.jpg")
b=LoadAnimImage("images/12.jpg",145,255,0,8)




Repeat
xmaus=MouseX()
ymaus=MouseY()
Cls

DrawImage a,0,0
For I=0 To 7
DrawImage b,445,200, I
Delay 200
Flip

Next
DrawImage maus,xmaus,ymaus



Flip

Forever

BtbN

BeitragDo, Jan 05, 2006 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, MilliSecs() gibt die zeit seit dem Systemstart in MilliSekunden zurück.
Dies kann man in seinen spielen dafür missbrauchen, um z.B. wie du ein Animiertes Bild ohne ein Anhalten des Programms via Delay zu animieren, hier ein Beispiel mit erklärung, wies bei dir gehen würde:

Code: [AUSKLAPPEN]
Include "confic.bb"

Global a=LoadImage("images/11.jpg")
Global b=LoadAnimImage("images/12.jpg",145,255,0,8)
Global xmaus,ymaus
Global animseq,timer1=MilliSecs()



Repeat
xmaus=MouseX()
ymaus=MouseY()
Cls

DrawImage a,0,0

If MilliSecs()-timer1 >= 200 Then
 timer1 = MilliSecs()
 animseq = animseq + 1
 If animseq = 8 Then animseq = 0
Endif

DrawImage b,445,200, animseq





DrawImage maus,xmaus,ymaus



Flip

Until KeyHit(1)


Also, die Variable animseq enthält, welcher Frame des AnimImages gezeigt werden soll, nun zu dem Teil mit MilliSecs():
In der variable timer1 ist der Zeitpunkt(!) der letzen änderung des Frames gespeichert, indem man diesen Wert von der aktuellen Zeit(MilliSecs()) abzieht, erfährt man, wie viele milliSekunden sei diesem Zeitpunkt vergangen sind, und da du je alle 200ms den Frame wchseln willst, habe ich auch im Beispiel 200ms genommen.
Und jetzt wird alle 200ms der timer1 auf die aktuelle Zeit gesetzt, und der Frame um 1 erhört. Und wenn die animseq 8 erreicht hat, setze ich sie wieder auf 0, um einen error zu vermeiden.

Ich hoffe, das war jetzt verständlich.
Nebenbei hab ich auch noch nen paar unschönheiten im Code beseitigt:
Flip nur ein mal am Ende der schleife ^^

Tauben-Ripper

Betreff: danke!

BeitragDo, Jan 05, 2006 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gehttttttttttttttttttttttt!!!! danke danke
du hast meinen tag gerettet (und mein programm xD)

danke nochma

Ps: Dieses Forum ist echt super!!!!!!!!!!!!!!!!

BtbN

BeitragDo, Jan 05, 2006 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hehe, kein Problem ^^

Edit: Hast du es denn auch verstanden, wie das mit MilliSecs läuft?
Weil das braucht man zimlich oft.

Tauben-Ripper

BeitragDo, Jan 05, 2006 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
joa hab ich, ist eigentich gar ned so schwer, wenn mans weißs wie es geht xD

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group