Farbverlauf
Übersicht

![]() |
NescioBetreff: Farbverlauf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, grade eine Funktion geschrieben, die einem einen zeitgesteuerten Farbverlauf ermöglicht. Vielleicht hifts irgendjemandem.
Die Funktion bekommt als Übergabeparameter nur einen String und setzt dann drei globale Variablen r,g,b auf die Farbwerte: Code: [AUSKLAPPEN] Farbverlauf("1000,255,0,0;2000,255,255,000")
Color r,g,b Damit wird ein 1 Sekunde dauernder Verlauf von Rot nach Gelb und ein 2 Sekunden dauernder Verlauf von Gelb nach Rot erzeugt. Um die Funktion benutzen zu können, muss sie am Anfang eingebunden werden: Code: [AUSKLAPPEN] Include "Farbverlauf.bb"
hier der komplette Code: Code: [AUSKLAPPEN] ;Farbverlauf.bb
Global r,g,b Global start Global pos=1 Function farbverlauf(v$,reset=0) If timer=0 Or reset Then timer=MilliSecs() If reset Then pos=1 time=MilliSecs()-start colourtime=Int(Mid$(v$,pos,4)) If time>colourtime Then pos=pos+17 If pos>Len(v$) Then pos=1 start=MilliSecs() colourtime=Int(Mid$(v$,pos,4)) time=MilliSecs()-start EndIf timeleft=colourtime-time npos=pos+17 If npos>Len(v$) Then npos=1 pr=Int(Mid$(v$,pos+ 5,3)) pg=Int(Mid$(v$,pos+ 9,3)) pb=Int(Mid$(v$,pos+13,3)) nr=Int(Mid$(v$,npos+ 5,3)) ng=Int(Mid$(v$,npos+ 9,3)) nb=Int(Mid$(v$,npos+13,3)) r = ((pr*timeleft)+(nr*time))/colourtime g = ((pg*timeleft)+(ng*time))/colourtime b = ((pb*timeleft)+(nb*time))/colourtime End Function Viel Spaß damit MfG Nescio |
||
Quod est faciendum? Nescio! |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habs testen wollen, aber gleich am Anfang kommt ein Fehler "Integer divided by zero" in der Zeile
Code: [AUSKLAPPEN] r = ((pr*timeleft)+(nr*time))/colourtime
kannst du das nicht noch schnell ausbessern? Und dabei könntest du gleich der Funktion mehrere Parameter übergeben, nicht nur einen String. Das macht die sache langsamer und irgendwie unnötig umständlich, weil man müsste sich erstmal aus den Parametern einen String basteln, und den dann von deiner Funktion zerlegen lassen... Dann nochwas: Die Zeile Code: [AUSKLAPPEN] pos=pos+17
ist dich etwas "steif"... So wie ich das verstehe, kann man keinen Farbvelauf mit 5stelliger Zeit zeichnen? |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Nescio |
![]() Antworten mit Zitat ![]() |
---|---|---|
da ich bis jetzt nur farbverläufe < 10sek brauchte hats mir gereicht, ansonsten kannst du dir die Funktion gerne deinen Bedürfnissen entsprechend umbauen.
Das mit dem "Integer divided by zero" liegt wohl daran, dass du bei der Zeit AUF JEDEN FALL VIER STELLEN haben musst. Wenn du nun Zeiten von zB einer halben Sekunde angeben willst, schreibst du "0500". Wie gesagt, ich war halt einfach zu faul, die Funktion "idiotensicher" zu machen, aber wenn du willst, kannst du das gerne übernehmen. MfG Nescio |
||
Quod est faciendum? Nescio! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group