January 26, 2021, 06:40:11 AM

Author Topic: [bb] Wiping transition by Neo Genesis10 [ 1+ years ago ]  (Read 404 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Wiping transition by Neo Genesis10 [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : Wiping transition
Author : Neo Genesis10
Posted : 1+ years ago

Description : Call Transition to grab the contents of the buffers and 'slice' the front buffer into segments. Then call UpdateTransition to move the segments. The UpdateTransition function will return True once the transition is complete.

The optional parameters for the wipe are direction and lineararity. If you want the effect to travel in a certain direction use cstUp, cstDown etc to choose its direction or randomise it. cstHoriz / cstVert slices the screen and each half of the transition moves in opposing directions. The linear option means all slices move at the same pace.

Hope you enjoy it!


Code :
Code: BlitzBasic
  1. Const cstUp = 0
  2. Const cstDown = 1
  3. Const cstRight = 2
  4. Const cstLeft = 3
  5. Const cstHoriz = 4
  6. Const cstVert = 5
  7.  
  8. Type trans_slide
  9.         Field x, y
  10.         Field img
  11.         Field speed
  12.         Field dir
  13. End Type
  14.  
  15. Global trans_img = CreateImage(GraphicsWidth(), GraphicsHeight())
  16.  
  17. Function Transition(dir=cstRight, linear=False)
  18.  
  19.         buffer = GraphicsBuffer()
  20.        
  21.         GrabImage trans_img, 0, 0
  22.        
  23.         SetBuffer FrontBuffer()
  24.        
  25.         Select dir
  26.                 Case cstLeft, cstRight
  27.                         For y = 0 To GraphicsHeight()
  28.                                 t.trans_slide = New trans_slide
  29.                                 timg = CreateImage(GraphicsWidth(), 1)
  30.                                 GrabImage timg, 0, y
  31.                                 tx = 0
  32.                                 ty = y
  33.                                 If linear
  34.                                         tspeed = 6
  35.                                 Else
  36.                                         tspeed = Rand(4, 8)
  37.                                 EndIf
  38.                                 tdir = dir
  39.                         Next           
  40.                 Case cstUp, cstDown
  41.                         For x = 0 To GraphicsWidth()
  42.                                 t.trans_slide = New trans_slide
  43.                                 timg = CreateImage(1, GraphicsHeight())
  44.                                 GrabImage timg, x, 0
  45.                                 tx = x
  46.                                 ty = 0
  47.                                 If linear
  48.                                         tspeed = 6
  49.                                 Else
  50.                                         tspeed = Rand(4, 8)
  51.                                 EndIf
  52.                                 tdir = dir
  53.                         Next           
  54.                 Case cstHoriz
  55.                         tdir = False
  56.                         For y = 0 To GraphicsHeight()
  57.                                 t.trans_slide = New trans_slide
  58.                                 timg = CreateImage(GraphicsWidth(), 1)
  59.                                 GrabImage timg, 0, y
  60.                                 tx = 0
  61.                                 ty = y
  62.                                 If linear
  63.                                         tspeed = 6
  64.                                 Else
  65.                                         tspeed = Rand(4, 8)
  66.                                 EndIf
  67.                                 If tdir
  68.                                         tdir = cstLeft
  69.                                 Else
  70.                                         tdir = cstRight
  71.                                 EndIf
  72.                                 tdir = Not tdir
  73.                         Next
  74.                 Case cstVert
  75.                         tdir = False
  76.                         For x = 0 To GraphicsWidth()
  77.                                 t.trans_slide = New trans_slide
  78.                                 timg = CreateImage(1, GraphicsHeight())
  79.                                 GrabImage timg, x, 0
  80.                                 tx = x
  81.                                 ty = 0
  82.                                 If linear
  83.                                         tspeed = 6
  84.                                 Else
  85.                                         tspeed = Rand(4, 8)
  86.                                 EndIf
  87.                                 If tdir
  88.                                         tdir = cstUp
  89.                                 Else
  90.                                         tdir = cstDown
  91.                                 EndIf
  92.                                 tdir = Not tdir
  93.                         Next
  94.         End Select
  95.        
  96.         buffer = GraphicsBuffer()
  97.        
  98. End Function
  99.  
  100. Function UpdateTransition()
  101.  
  102.         SetBuffer BackBuffer()
  103.         DrawBlock trans_img, 0, 0
  104.         count = 0
  105.         For t.trans_slide = Each trans_slide
  106.                 Select tdir
  107.                         Case cstUp
  108.                                 ty = ty - tspeed
  109.                                 If ty < -GraphicsHeight()
  110.                                         FreeImage timg
  111.                                         Delete t
  112.                                 Else
  113.                                         DrawBlock timg, tx, ty
  114.                                         count = count + 1
  115.                                 EndIf
  116.                         Case cstDown
  117.                                 ty = ty + tspeed
  118.                                 If ty > GraphicsHeight()
  119.                                         FreeImage timg
  120.                                         Delete t
  121.                                 Else
  122.                                         DrawBlock timg, tx, ty
  123.                                         count = count + 1
  124.                                 EndIf
  125.                         Case cstRight
  126.                                 tx = tx + tspeed
  127.                                 If tx > GraphicsWidth()
  128.                                         FreeImage timg
  129.                                         Delete t
  130.                                 Else
  131.                                         DrawBlock timg, tx, ty
  132.                                         count = count + 1
  133.                                 EndIf
  134.                         Case cstLeft
  135.                                 tx = tx - tspeed
  136.                                 If tx < -GraphicsWidth()
  137.                                         FreeImage timg
  138.                                         Delete t
  139.                                 Else
  140.                                         DrawBlock timg, tx, ty
  141.                                         count = count + 1
  142.                                 EndIf
  143.                 End Select
  144.         Next
  145.        
  146.         If count = 0
  147.                 Return True
  148.         EndIf
  149.        
  150. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal