Blinkimpulse
Übersicht
BlitzBasic
Codearchiv
|
Betreff: Blinkimpulse
|
So, Mai 30, 2004 8:09
Antworten mit Zitat
|
Hier mal ein Beispiel, wie man das Blinken eines Objektes realisieren könnte. Solche Effekte werden z.B. eingesetzt, wenn ein Spieler ein Leben verloren hat und danach für kurze Zeit unverwundbar ist und dies durch Blinken der Spielfigur angezeigt wird.
Man kann beliebig viele Objekte benutzen, man muss aber jeden 'Blinker' am Anfang einmal erstellen.
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] Graphics 120,300,16,2 SetBuffer BackBuffer() AppTitle "Impulse"
Type Impuls Field Timer1, Timer2, Intervall, ID End Type
For i = 1 To 6 CreateImpuls(i*200,i) Next
Repeat Cls
For i = 1 To 6 If Impuls(i) = 1 Then Color 255-i*30, 255-i*30,0: Oval 10, i*40,20,20,1 Color 255-i*30, 255-i*30,0: Text 50, 5+i*40, i*200 + " ms" Next Flip Until KeyHit(1) End
Function CreateImpuls(Intervall, Id) i.impuls = New impuls i\intervall = intervall i\id = id i\timer1 = MilliSecs() i\timer2 = MilliSecs() End Function
Function Impuls(id) For i.impuls = Each impuls
If i\id = id If MilliSecs() - i\timer1 < i\intervall/2 Then Return 1 EndIf
If MilliSecs() - i\timer2 > i\intervall Then i\timer2 = MilliSecs() i\timer1 = MilliSecs() EndIf
EndIf
Next
End Function
|
www.funforge.org
Ich hasse WASD-Steuerung.
Man kann alles sagen, man muss es nur vernünftig begründen können.
|
|
|
So, Mai 30, 2004 16:48
Antworten mit Zitat
|
ganz nett, aber ich finde blinken immer schöner, wenn die objekte nach und nach transparenter werden und dann ganz verschwinden
|
|
|
|
Mo, Mai 31, 2004 23:52
Antworten mit Zitat
|
Ich fände es besser wenn CreateImpuls den Type zurück gäbe
damit man direkt den Status erfragen kann und den nicht aus
allen heraus suchen muß . Und eine Update Funktion für alle Timers .
BlitzBasic: [AUSKLAPPEN] [EINKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() AppTitle "Impulse"
Type ImpulsType Field Intervall Field Timer Field OnOff End Type
Local imp1.ImpulsType=CreateImpuls(1*200) Local imp2.ImpulsType=CreateImpuls(2*200) Local imp3.ImpulsType=CreateImpuls(3*200) Local imp4.ImpulsType=CreateImpuls(4*200) Local imp5.ImpulsType=CreateImpuls(5*200) Local imp6.ImpulsType=CreateImpuls(6*200)
Repeat Cls
For i = 1 To 6 OnOff=0 Select i Case 1:OnOff=imp1\OnOff Case 2:OnOff=imp2\OnOff Case 3:OnOff=imp3\OnOff Case 4:OnOff=imp4\OnOff Case 5:OnOff=imp5\OnOff Case 6:OnOff=imp6\OnOff End Select Color 255-i*30, 255-i*30,0 If OnOff=1 Then Oval 10, i*40,20,20,1 Text 50, 5+i*40, i*200 + " ms" Next
ImpulsUpdateAll()
Flip Until KeyHit(1) ImpulsFreeAll() End
Function CreateImpuls.ImpulsType(Intervall)
Local i.ImpulsType i.ImpulsType = New ImpulsType
i\intervall = intervall i\OnOff= 0 i\timer = MilliSecs()
Return i
End Function
Function ImpulsUpdateAll()
Local Zeit=MilliSecs() Local i.ImpulsType
For i.ImpulsType = Each ImpulsType
If (Zeit - i\timer) < i\intervall/2 Then i\OnOff=0 Else i\OnOff=1
If Zeit - i\timer => i\intervall Then i\timer = Zeit EndIf
Next
End Function
Function ImpulsFreeAll()
Local i.ImpulsType For i.ImpulsType = Each ImpulsType Delete i Next
End Function
|
|
Übersicht
BlitzBasic
Codearchiv
Powered by phpBB © 2001 - 2006, phpBB Group