Zeitgesteuertes Faden, aber wie ? [gelöst]

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

d-bug

Betreff: Zeitgesteuertes Faden, aber wie ? [gelöst]

BeitragDi, Nov 15, 2005 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Gestern hatte ich mal eine kleine Denkblockade, die sich bis heute nicht gelöst hat...

Sagen wir einmal, ich möchte ein Image innerhalb einer bestimmten Zeit von Alpha1 nach Alpha2 faden. Wie müßte ich das wohl am sinnvollsten Anstellen?

Ich schäme mich unglaublich, diese dämliche Frage zu stellen, weil das ja nun wirklich mehr Grundwissen ist als alles andere. Embarassed Sad

Gestern hab ich Dummbatsch einfach die Differenz zwischen Alpha1 und Alpha2 durch die Zeit geteilt und das in jedem Loop zu Alpha1 addiert. Ist natürlich völliger Unsinn, aber mir will einfach der richtige Ansatz nicht einfallen.
  • Zuletzt bearbeitet von d-bug am Di, Nov 15, 2005 14:21, insgesamt einmal bearbeitet

bruZard

BeitragDi, Nov 15, 2005 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso ... war doch richtig.

Alpha-Differenz = Alpha2 - Alpha1

Sagen wir das Faden soll 1sek dauern, dann ist der Alphastep = Alpha-Differenz/1000

...oder denke ich hier auch falsch?
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

d-bug

BeitragDi, Nov 15, 2005 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, mich wunderte allerdings dann , daß das Faden, daß eigentlich 2 Sekunden dauern sollte, gerade mal ca. 10 Sekunden gedauert hat Sad

Suco-X

Betreff: .........

BeitragDi, Nov 15, 2005 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Interpolation hilft bei solchen Sachen immer ganz gut.
Mal meine Version.

Code: [AUSKLAPPEN]

Strict

Graphics 800,600,0


Local Alpha1:Float = 1.0
Local Alpha2:Float = 0.0
Local AlphaNow:Float

Local TimeTotal:Int     = 5000
Local TimeNow:Int 
Local TimeStart:Int

DrawText "Press any key",10,10
Flip
WaitKey


TimeStart = MilliSecs()

Repeat
   Cls
   
   TimeNow = MilliSecs()-TimeStart
   
   AlphaNow = LinearInterpolate(Alpha1, Alpha2, TimeNow/Float(TimeTotal))
   SetBlend ALPHABLEND
   SetAlpha AlphaNow
   DrawRect 0,0,500,500
   Flip
Until TimeNow=>TimeTotal Or KeyDown(KEY_ESCAPE)



Function LinearInterpolate:Float(v1:Float, v2:Float, mu:Float)
    Return(v1*(1-mu)+v2*mu)
End Function

Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

d-bug

BeitragDi, Nov 15, 2005 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Suco-X, dafür bekommst du einmal Wäsche bügeln umsonst ! Smile

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group