Журнал о программированнии на языках Blitz3D, BlitzPlus, BlitzMax

Blitz3D-код:FastfadingOf2DOr3DScreen.bb

Материал из Blitz Et Cetera

Перейти к: навигация, поиск
; ########################################

; # CHEATED FADING USING 3D ON TOP OF 2D #
; ########################################
; #   BY TRACER (tracer@darkeffect.com)  #
; ########################################

Graphics3D 640,480,0,2                          ; 3D mode

; create something to fade to and from
Global logo = CreateImage(640,480)
SetBuffer ImageBuffer(logo)
For t = 1 To 10000
        Color Rnd(100,255),Rnd(100,255),Rnd(100,255)
        Rect Rnd(0,639),Rnd(0,479),Rnd(10,50),Rnd(10,50)
Next
SetBuffer BackBuffer()

camera = CreateCamera()
CameraClsMode camera,0,1 ; NEEDED! for 3d on top of 2D

Global fade_sprite = CreateSprite() ; create sprite

; color of sprite, this determines the color to fade from and to
EntityColor fade_sprite,0,0,0

MoveEntity fade_sprite,0,0,1 ; move to just before camera
EntityOrder fade_sprite,-100 ; make sure it gets drawn last

Delay 1000

intro()

Function intro()
        Local fade_in = False
        Local fade_out = False
        Local done = False
        Local fade_level# = 1
        Local timer = 0
       
        While done = False
                timer = timer + 1
               
                If timer = 100
                        fade_in = True
                EndIf
               
                Cls
                ; background 2d (included in fade)

                DrawImage logo,0,0
                       
                ; 3D (used for 3d sprite that does fade)
       
                If fade_in = True
                        EntityAlpha fade_sprite,fade_level#
                        fade_level# = fade_level# - .01
                        If fade_level# <= 0
                                fade_level# = 0
                                fade_in = False
                        EndIf
                EndIf
               
                If fade_out = True
                        EntityAlpha fade_sprite,fade_level#
                        fade_level# = fade_level# + .01
                        If fade_level# => 1
                                fade_level# = 1
                                done = True
                        EndIf
                EndIf          
               
                If GetKey() Or timer >= 500
                        fade_in = False
                        fade_out = True
                EndIf
                       
                RenderWorld

                ; foreground 2D (not included in fade)

                Color 255,255,255
                Text 250,16,"This will not fade!"

                Flip
        Wend   

End Function

Другие

Друзья