Trouble with fades...

BlitzMax Forums/BlitzMax Programming/Trouble with fades...

Hey guys,

I'm having a bit of trouble implementing a fade between level transitions.

Here is the pseudocode for half of the transition:


Function fadeTransition()
	SetBlend alphablend 
	Local SplashCounter = 0 
	
	Local alphaValue:Float = 0.0 
	
	While SplashCounter < 50 
		


		DrawLevel()
		DrawChars()
	
		SetAlpha alphaValue 
		
		TileImage white_fade
		
		SetAlpha 1.0		
		
		
		alphaValue = alphaValue + 0.02

		SplashCounter = SplashCounter + 1
		
		
		Flip 
		Cls 
		
	Wend 
End function 




All I get is a white screen. When I remove the line that says "SetAlpha 1.0", I get a weird washout effect. I've had fades working before, as I've used a similar method in my previous game for a splashscreen. Anyone have any ideas as to why it is not working now?

What kind of effect are you trying to accomplish? Without knowing that, it's hard to give specific pointers.

You may find the following of use, something I put in the code archives last year: http://blitzbasic.com/codearcs/codearcs.php?code=1281
Fade to black, fade to white, and a crossfade between two images.

And another one I did, that's somewhat related: http://blitzbasic.com/codearcs/codearcs.php?code=1282
Fade an image from color to black-and-white, and back again.

(Note: these were written quite a while ago. You'll need to remove the 'flushmem' command from the linked sources, it is no longer necessary/supported.)

Hey,

Sorry, I should have been more specific. I am trying to fade to white when a level is finished, load the new level, and then fade from white to the newly loaded level. That's what happens when I code and try to make coherent posts at 1 AM, haha. ;)

Ok, I've revised and commented my code in order to make it a little easier to read:


Function fadeTransition()
	SetBlend alphablend 
	Local SplashCounter = 0  'value which is iterated in order to keep track of the loop 
	Local alphaValue:Float = 0.0 'value which sets the opacity value for the white tiles in the loop
	
	
	
	While SplashCounter < 50 
		
		If KeyHit(KEY_Enter) Or KeyHit(KEY_Space) Then 
		
		End If 
		
		If MouseHit(1) Then 
		
		End If 

		SetAlpha 1.0 'sets the opacity to 100% so that the stage can be drawn

		DrawLevel() 'routines for drawing the current stage
		DrawChars() 'routines for drawing the characters
	
		SetAlpha alphaValue 'the opacity is set to a variable so that the white tiles may be drawn
		
		TileImage white_fade 'white tiles are drawn across the screen
			
		alphaValue = alphaValue + 0.02 'the opacity value is incremented for the next trip through the loop

		SplashCounter = SplashCounter + 1 'the loop counter is iterated
		
		
		Flip
		Cls
		

	Wend 
        
       'Code for unloading old level and loading a new one goes here

     'level fades back in here

End Function 



What I dont understand is why I just get a white screen when I include the "SetAlpha 1.0" line. Does anyone have any ideas?

I'd guess that that maybe you are resetting the blend to SolidBlend by accident somewhere in your DrawLevels or DrawChars functions. Then the white tiles are draw solid.

Hey Grey Alien,

Good call! That fixed it :) Thanks.

YES! nice one. I feel I've atoned for trying to sell someone my framework earlier who was asking about hiding the mouse cursor ;-)