Image Fade In/Out

Monkey Forums/Monkey Programming/Image Fade In/Out

erebel55(Posted 2014) [#1]
I would like to fade an image in and out, from 0 alpha to 1 and vice verse.

Has anyone written anything they would share?
Is there a better way than WritePixels?

Thank you


Danilo(Posted 2014) [#2]
Just use SetAlpha before DrawImage:
Strict

Import "image.png"

Import mojo

Class Program Extends App

    Field img:Image
    Field alpha:Float = 0.0
    Field switch:Bool = False

    Method OnCreate:Int()
        SetUpdateRate(60)
        img = LoadImage("image.png")
        Return 0
    End


    Method OnRender:Int()
        Cls 0,0,0
        SetBlend AlphaBlend
        SetAlpha alpha
        DrawImage(img,50,50)
        Return 0
    End
    
    Method OnUpdate:Int()
        If switch = False
            alpha += 0.01
            If alpha > 1.0
                alpha = 1.0
                switch = True
            Endif
        Else
            alpha -= 0.01
            If alpha < 0.0
                alpha = 0.0
                switch = False
            Endif
        Endif
        Return 0
    End
End

Function Main:Int()
    New Program
    Return 0
End



erebel55(Posted 2014) [#3]
Thank you! :)


dawlane(Posted 2014) [#4]
Another way
Strict

Import mojo

Class Game Extends App
	Field alpha:Float
	Field image:Image
	Field dir:Float
	
	Method OnCreate:Int()
		SetUpdateRate(60)
		Self.image=LoadImage("test.png")
		
		Self.alpha=0.0
		Self.dir=0.01
		Return 0
	End Method
	
	Method OnUpdate:Int()
		Self.alpha += Self.dir
		If Self.alpha > 1.0 Or Self.alpha < 0.0 Then Self.dir = -Self.dir
		Return 0
	End Method
	
	Method OnRender:Int()
		Cls
		SetAlpha(Self.alpha)
		DrawImage(Self.image,0,0)
		Return 0
	End Method
End Class

Function Main:Int()
	New Game
	Return 0
End Function



erebel55(Posted 2014) [#5]
Cleaner, thank you! :)


dawlane(Posted 2014) [#6]
And here's a variation that will do pausing between fades. Note: Doesn't allow for different update rates.