Here's another example with a smaller procedure but you add your own delays in the repeat section.
Will work with the same images in the download example from above.
Code: Select all
Structure Sprite3DCalculations
Animate.l
EndStructure
Procedure AnimateSprite3D(Sprite, SpriteNumberFrom, SpriteNumberTo)
Static Dim Sprites3D.Sprite3DCalculations(99)
If Sprites3D(Sprite)\Animate = (SpriteNumberTo - SpriteNumberFrom) +1
Sprites3D(Sprite)\Animate = SpriteNumberFrom -1
EndIf
Sprites3D(Sprite)\Animate +1
CreateSprite3D(Sprite, Sprites3D(Sprite)\Animate)
EndProcedure
If InitKeyboard() = 0
MessageRequester("Error!", "Keyboard system can not be initialized.", 0)
End
EndIf
If InitSprite() = 0
MessageRequester("Error!", "Sprite system can not be initialized.", 0)
End
EndIf
If InitSprite3D() = 0
MessageRequester("Error!", "Sprite3D system can't be initialized.", 0)
End
EndIf
UsePNGImageDecoder()
If OpenScreen(1280, 720, 32, "Sprite3D Animated", #PB_Screen_SmartSynchronization)
CatchSprite(1, ?Pic1, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(2, ?Pic2, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(3, ?Pic3, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(4, ?Pic4, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(5, ?Pic5, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(6, ?Pic6, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(7, ?Pic7, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(8, ?Pic8, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(9, ?Pic9, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(10, ?Pic10, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(11, ?Pic11, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(12, ?Pic12, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(13, ?Pic13, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(14, ?Pic14, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
CatchSprite(15, ?Pic15, #PB_Sprite_Texture | #PB_Sprite_AlphaBlending)
Sprite3DAniDelay = 4
ImageSize = 256
Repeat
SetFrameRate(60)
FlipBuffers()
ClearScreen(RGB(0,0,0))
Start3D()
If Sprite3DAniDelay = 4 ;added a delay since the animation is only 15 fps.
AnimateSprite3D(1, 1, 15)
Sprite3DAniDelay = 0
EndIf
Sprite3DAniDelay +1
ZoomSprite3D(1, ImageSize +zoom.d, ImageSize +zoom.d)
DisplaySprite3D(1, 32, 32)
Stop3D()
If ImageSize +zoom.d < 512
zoom.d +0.5
EndIf
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error!", "Can not open a 1280x720 - 32 bit screen.", 0)
EndIf
End
DataSection
Pic1: IncludeBinary "images/star00001.png"
Pic2: IncludeBinary "images/star00002.png"
Pic3: IncludeBinary "images/star00003.png"
Pic4: IncludeBinary "images/star00004.png"
Pic5: IncludeBinary "images/star00005.png"
Pic6: IncludeBinary "images/star00006.png"
Pic7: IncludeBinary "images/star00007.png"
Pic8: IncludeBinary "images/star00008.png"
Pic9: IncludeBinary "images/star00009.png"
Pic10: IncludeBinary "images/star00010.png"
Pic11: IncludeBinary "images/star00011.png"
Pic12: IncludeBinary "images/star00012.png"
Pic13: IncludeBinary "images/star00013.png"
Pic14: IncludeBinary "images/star00014.png"
Pic15: IncludeBinary "images/star00015.png"
EndDataSection