Bild Fading

Posted By: Yamm

Bild Fading - 10/01/14 15:33

Ich würde gerne Bilder zeitgesteuert ein- und ausblenden. In der Hilfe habe ich zwar etwas gefunden, aber das klappt nur bis zur Einblendung, anschließend bekomme ich das Bild nicht mehr weg.

Code:
// Show Bitmap
		if ((time > 32) && (time < 75))
		{
			test_bmp.pos_x = sys_metrics(0) / 2 - test_bmp.size_x / 2;	// Center
			test_bmp.pos_y = sys_metrics(1) / 2 - test_bmp.size_y / 2;	// Center
			test_bmp.scale_x = fac_x;
			test_bmp.scale_y = fac_y;
			test_bmp.alpha = 0;
			test_bmp.flags = SHOW;
			
			// Fade in and out
			if (time < 65)
			{
				test_bmp.alpha = 0;
				set(test_bmp,TRANSLUCENT);
				for (test_bmp.alpha = 0; test_bmp.alpha += 5; test_bmp.alpha < 100) wait(1);
				reset(test_bmp,TRANSLUCENT);
			}else{
				test_bmp.alpha = 100;
				set(test_bmp,TRANSLUCENT);
				for (test_bmp.alpha = 100; test_bmp.alpha -= 5; test_bmp.alpha > 0) wait(1);
				reset(test_bmp,TRANSLUCENT);
			}
			
		}else{
			test_bmp.flags &= ~SHOW;
		}



Das ein- und ausblenden hatte ich auch in eigenen Funktionen (kann man ja immer brauchen) aber da blendet er es nicht einmal vernünftig ein. Außerdem habe ich es auch schon Mal mit while versucht, mit dem gleichen Resultat.

Btw: das ganze befindet sich in einer großen While-Schleife, welche die Zeit zählt.
Posted By: Superku

Re: Bild Fading - 10/01/14 17:47

Da sich das alles in einer while-Schleife befindet, sind natürlich die for loops samt wait überflüssig/ fehl am Platze - ebenso die alpha = 0/ 100 Zuweisungen.
Schreibe stattdessen doch einfach (ohne if/ else):

var i = 5*sign(65-time);
test_bmp.alpha = clamp(test_bmp.alpha+i*time_step,0,100);
Optional:
if(test_bmp.alpha < 100) set(...,TRANSLUCENT);
else reset(...);
Posted By: Yamm

Re: Bild Fading - 10/01/14 18:45

Wow, mal wieder ein riesen Danke! Was mir noch gefehlt hat war ein

test_bmp.flags = SHOW | TRANSLUCENT;

statt nur

test_bmp.flags = SHOW;

Jetzt ist es perfekt.
© 2024 lite-C Forums