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 ;-) |