Sprites API

Function CreateSprite(img, frame_w, frame_h)

This function returns a new sprite which you can place in a variable for use in your program.

Here is an example of opening a sprite canvas layer, creating a sprite, setting it's position and finally displaying it.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("CreateSprite", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

While Not Key(K_ESCAPE)
'ClearCanvas() For a sprite layer canvas, you don't need to call ClearCanvas. It's automatically called.
Update() 'Update automatically deals with drawing the sprites on the sprite canvas.
Wend

Sub DeleteSprite(sprite)

Removes a sprite from memory.

Here is an example:

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("CreateSprite", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, 150, 100)

timePassed = Timer()
timePassedDiff = 2000

While Not Key(K_ESCAPE)

If Timer() - timePassed > timePassedDiff Then 'After 2 seconds eyeSprite2 will be deleted
DeleteSprite(eyeSprite2)
End If

Update()
Wend

Sub SetSpritePosition(sprite, x, y)

Sets the position of the sprite in the canvas.

Note: This is canvas position and not screen position.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpritePosition", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
eyeSpriteX = 100
eyeSpriteY = 100

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY) 'Position on the canvas the sprite will initially be drawn.

speed = 0.4

While Not Key(K_ESCAPE)

SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
eyeSpriteX = eyeSpriteX + speed 'Speed will be added to sprites X position, sprite will move to the right gradually

Update()
Wend

Sub TranslateSprite(sprite, x, y)

Move a sprite relative to its current position.

Note: This function sets the position of a sprite without regards to physics properties so it will not trigger collision detection or collision response.


Sub GetSpritePosition(sprite, ByRef x, ByRef y)

Gets the position of a sprite on the canvas.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("GetSpritePosition", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

DIM eye
DIM eyeW
DIM eyeH
DIM eyeX 'Variables to pass into the function for holding the x and y values
DIM eyeY
eyeSpriteX = 100
eyeSpriteY = 100
destX = 0

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)

While Not Key(K_ESCAPE)
ClearCanvas()
Canvas(sCanvas) 'change to the sprite canvas for drawing sprites
If SpriteX(eyeSprite) < 450 And destX = 0 Then
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
eyeSpriteX = eyeSpriteX + 0.5
ElseIf SpriteX(eyeSprite) >= 440 And destX = 0 Then
destX = 1
End If

If destX = 1 Then
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
eyeSpriteX = eyeSpriteX - 0.5
End If

GetSpritePosition(eyeSprite, eyeX, eyeY)
Canvas(pCanvas) 'change to the standard drawing canvas for drawing text
DrawText("Sprite X: " + STR$(eyeX), 10, 30)
DrawText("Sprite Y: " + STR$(eyeY), 10, 50)

Update()
Wend

Function SpriteX(sprite)

Returns the X position of a sprite on a canvas.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SpriteX", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

DIM eye
DIM eyeW
DIM eyeH
DIM eyeX 'Variables to pass into the function for holding the x value
eyeSpriteX = 100
eyeSpriteY = 100
destX = 0

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)

While Not Key(K_ESCAPE)
ClearCanvas()
Canvas(sCanvas) 'change to the sprite canvas for drawing sprites
If SpriteX(eyeSprite) < 450 And destX = 0 Then
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
eyeSpriteX = eyeSpriteX + 0.5
ElseIf SpriteX(eyeSprite) >= 440 And destX = 0 Then
destX = 1
'eyeSpriteX = SpriteX(eyeSprite)
End If

If destX = 1 Then
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
eyeSpriteX = eyeSpriteX - 0.5
End If

Canvas(pCanvas)
eyeX = SpriteX(eyeSprite) 'change to the standard drawing canvas for drawing text
DrawText("Sprite X: " + STR$(eyeX), 10, 30)

Update()
Wend

Function SpriteY(sprite)

Returns the Y position of a sprite on a cnavas.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SpriteY", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

DIM eye
DIM eyeW
DIM eyeH
DIM eyeY 'Variables to pass into the function for holding the y value
eyeSpriteX = 100
eyeSpriteY = 100
destY = 0

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)

While Not Key(K_ESCAPE)
ClearCanvas()
Canvas(sCanvas) 'change to the sprite canvas for drawing sprites
If SpriteY(eyeSprite) < 450 And destY = 0 Then
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
eyeSpriteY = eyeSpriteY + 0.5
ElseIf SpriteY(eyeSprite) >= 440 And destY = 0 Then
destY = 1
End If

If destY = 1 Then
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
eyeSpriteY = eyeSpriteY - 0.5
End If

Canvas(pCanvas)
eyeY = SpriteY(eyeSprite) 'change to the standard drawing canvas for drawing text
DrawText("Sprite Y: " + STR$(eyeY), 10, 30)

Update()
Wend

Sub SetSpriteRotation(sprite, angle)

Sets the angle the sprite is rotated by.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteRotation", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM eyeAngle 'Variable to hold the sprites angle value

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

While Not Key(K_ESCAPE)
'ClearCanvas() For a sprite layer canvas, you don't need to call ClearCanvas. It's automatically called.

SetSpriteRotation(eyeSprite, eyeAngle)

eyeAngle = eyeAngle + 0.3

Update() 'Update automatically deals with drawing the sprites on the sprite canvas.
Wend

Sub RotateSprite(sprite, angle)

Sets the angle the sprite is rotated by relative to its current rotation.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("RotateSprite", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM eyeAngle 'Variable to hold the sprites angle value
eyeAngle = 250
ReleaseKey = 0

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

'RotateSprite(eyeSprite, eyeAngle)

While Not Key(K_ESCAPE)
'ClearCanvas() For a sprite layer canvas, you don't need to call ClearCanvas. It's automatically called.

If Key(K_SPACE) And ReleaseKey = 0 Then
eyeAngle = 30
RotateSprite(eyeSprite, eyeAngle)
ReleaseKey = 1
ElseIf Not Key(K_SPACE) And ReleaseKey = 1 then
ReleaseKey = 0
End If

Update() 'Update automatically deals with drawing the sprites on the sprite canvas.
Wend

Function GetSpriteRotation(sprite)

Returns the angle the sprite is rotated by.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("GetSpriteRotation", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

DIM eye
DIM eyeW
DIM eyeH
DIM eyeAngle 'Variable to hold the sprites angle value
DIM displayAngle
ReleaseKey = 0

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

'RotateSprite(eyeSprite, eyeAngle)

While Not Key(K_ESCAPE)
ClearCanvas()
Canvas(sCanvas)

If Key(K_SPACE) And ReleaseKey = 0 Then
eyeAngle = 30
RotateSprite(eyeSprite, eyeAngle)
ReleaseKey = 1
ElseIf Not Key(K_SPACE) And ReleaseKey = 1 then
ReleaseKey = 0
End If

displayAngle = GetSpriteRotation(eyeSprite)
Canvas(pCanvas) 'change to the standard drawing canvas for drawing text
DrawText("Sprite Angle: " + STR$(displayAngle), 10, 30)

Update()
Wend

Sub SetSpriteScale(sprite, x, y)

Sets the scale of a sprite.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteScale", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM eyeScale 'Variable to hold the sprites scale
eyeScale = 2

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, 200, 100)

SetSpriteScale(eyeSprite2, eyeScale, eyeScale)

While Not Key(K_ESCAPE)

Update()
Wend

Sub ScaleSprite(sprite, x, y)

Sets the scale of a sprite relative to its current scale.


Sub GetSpriteScale(sprite, ByRef x, ByRef y)

Gets the scale of a sprite.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("GetSpriteScale", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

DIM eye
DIM eyeW
DIM eyeH
DIM eyeScale 'Variable to hold the sprites scale
ReleaseKey = 0
eyeScale = 2

DIM eyeScaleX
DIM eyeScaleY

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, 200, 100)

SetSpriteScale(eyeSprite2, eyeScale, eyeScale)

While Not Key(K_ESCAPE)
ClearCanvas()
Canvas(sCanvas)

If Key(K_UP) And ReleaseKey = 0 Then
eyeScale = 1.1
ScaleSprite(eyeSprite2, eyeScale, eyeScale)
ReleaseKey = 1
ElseIf Key(K_DOWN) And ReleaseKey = 0 Then
eyeScale = 0.9
ScaleSprite(eyeSprite2, eyeScale, eyeScale)
ReleaseKey = 1
ElseIf Not Key(K_UP) And Not Key(K_DOWN) And ReleaseKey = 1 then
ReleaseKey = 0
End If

GetSpriteScale(eyeSprite2, eyeScaleX, eyeScaleY)
Canvas(pCanvas) 'change to the standard drawing canvas for drawing text
DrawText("Sprite Scale X: " + STR$(eyeScaleX), 10, 30)

Update()
Wend

Sub SetSpriteZ(sprite, z)

Sets the drawing priority for sprites.

Note: Sprites with a higher Z order are drawn first and those with lower values will be drawn on top.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("ScaleSprite", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM sword
DIM swordW
DIM swordH
ReleaseKey = 0

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

sword = LoadImage("sword.png")
GetImageSize(sword, swordW, swordH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)
SetSpriteZ(eyeSprite, 1)

swordSprite = CreateSprite(sword, swordW, swordH)
SetSpritePosition(swordSprite, 89, 75)
SetSpriteZ(swordSprite, 5)

While Not Key(K_ESCAPE)

If Key(K_SPACE) And ReleaseKey = 0 Then
SetSpriteZ(eyeSprite, 10) 'This will cause the eye to be drawn behind the sword
ReleaseKey = 1
ElseIf Not Key(K_UP) And Not Key(K_DOWN) And ReleaseKey = 1 then
ReleaseKey = 0
End If

Update()
Wend

See also

SpriteZ()


Function SpriteZ(sprite)

Returns the drawing priority for sprites.

NOTE: Sprites with a higher Z order are drawn first and those with lower values will be drawn on top.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("ScaleSprite", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM eyeZ
DIM sword
DIM swordW
DIM swordH
DIM swordZ
ReleaseKey = 0

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

sword = LoadImage("sword.png")
GetImageSize(sword, swordW, swordH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)
SetSpriteZ(eyeSprite, 1)

swordSprite = CreateSprite(sword, swordW, swordH)
SetSpritePosition(swordSprite, 89, 75)
SetSpriteZ(swordSprite, 5)

While Not Key(K_ESCAPE)

swordZ = SpriteZ(swordSprite)
eyeZ = SpriteZ(eyeSprite)

Canvas(pCanvas) 'change to the standard drawing canvas for drawing text
DrawText("Eye Sprite Z: " + STR$(eyeZ), 10, 30)
DrawText("Sword Sprite Z: " + STR$(swordZ), 10, 50)

Update()
Wend

See also

SetSpriteZ()


Sub GetSpriteSize(sprite, ByRef w, ByRef h)

Gets the size of a sprite’s frames.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("ScaleSprite", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM eSpriteWidth
DIM eSpriteHeight

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

GetSpriteSize(eyeSprite, eSpriteWidth, eSpriteHeight)

While Not Key(K_ESCAPE)
Canvas(pCanvas) 'change to the standard drawing canvas for drawing text
DrawText("EyeSprite Width " + STR$(eSpriteWidth), 10, 30)
DrawText("EyeSprite Height " + STR$(eSpriteHeight), 10, 50)

Update()
Wend

See also

CreateSprite()


Function SpriteWidth(sprite))

Returns the frame width of a sprite.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SpriteWidth", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM eSpriteWidth

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

eSpriteWidth = SpriteWidth(eyeSprite)

While Not Key(K_ESCAPE)
Canvas(pCanvas) 'change to the standard drawing canvas for drawing text
DrawText("EyeSprite Width " + STR$(eSpriteWidth), 10, 30)

Update()
Wend

Function SpriteHeight(sprite))

Returns the frame height of a sprite.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SpriteHeight", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM eSpriteHeight

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

eSpriteHeight = SpriteHeight(eyeSprite)

While Not Key(K_ESCAPE)
Canvas(pCanvas) 'change to the standard drawing canvas for drawing text
DrawText("EyeSprite Height " + STR$(eSpriteHeight), 10, 50)

Update()
Wend

Function SetSpriteVisible(sprite, flag)

Set the sprite visible with the flag.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteVisible", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM spriteTimer : spriteTimer = Timer()
DIM spriteTimerDiff : spriteTimerDiff = 2000

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)

While Not Key(K_ESCAPE)
If Timer() - spriteTimer > spriteTimerDiff Then
SetSpriteVisible(eyeSprite, 0) 'Set sprite visible flag to 0 or false and it will become not visible
Print ("Function Called")
End If
Update()
Wend

Function SpriteIsVisible(sprite)

Returns whether the srite is visible.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteVisible", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM spriteTimer : spriteTimer = Timer()
DIM spriteTimerDiff : spriteTimerDiff = 2000

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, 100, 100)
SetSpriteVisible(eyeSprite, 0) 'Set the flag to 0 for not visible


While Not Key(K_ESCAPE)
If Timer() - spriteTimer > spriteTimerDiff Then
SetSpriteVisible(eyeSprite, 1)
Print ("Function Called")
End If

If SpriteIsVisible(eyeSprite) Then
Print ("Sprite is Visible")
Else
Print ("Sprite is not visible")
End If
Update()
Wend

Function SetSpriteSolid(sprite, flag)

Sets whether a sprite has physics and collision response enabled.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteSolid", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
eyeSpriteX = 100
eyeSpriteY = 100
eyeSprite2X = 400
eyeSprite2Y = 125

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
SetSpriteSolid(eyeSprite, 1) 'Setting the sprites as solid means they can collide with one another.

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, eyeSprite2X, eyeSprite2Y)
SetSpriteSolid(eyeSprite2, 1)

While Not Key(K_ESCAPE)

SetSpriteLinearVelocity(eyeSprite, 30, 0)
eyeSpriteX = eyeSpriteX + 0.5

Update()
Wend

See also

SpriteIsSolid()


Function SpriteIsSolid(sprite)

Returns true if a sprite is has physics and collision response enabled.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SpriteIsSolid", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
DIM trigger : trigger = 0
eyeSpriteX = 100
eyeSpriteY = 100
eyeSprite2X = 400
eyeSprite2Y = 125

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
SetSpriteSolid(eyeSprite, 1) 'Setting the sprites as solid means they can collide with one another.

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, eyeSprite2X, eyeSprite2Y)
SetSpriteSolid(eyeSprite2, 1)

While Not Key(K_ESCAPE)

SetSpriteLinearVelocity(eyeSprite, 30, 0)
eyeSpriteX = eyeSpriteX + 0.5

If SpriteIsSolid(eyeSprite2) And trigger = 0 Then
Print "Yup I'm solid!"
trigger = 1
End If
Update()
Wend

See also

SetSpriteSolid()


Sub SetSpriteType(sprite, sprite_type)

Sets the type of collision body a sprite has:

  • SPRITE_TYPE_STATIC
  • SPRITE_TYPE_KINEMATIC
  • SPRITE_TYPE_DYNAMIC

Here is an exmaple of SPRITE_TYPE_DYNAMIC:

'This is showing SPRITE_TYPE_DYNAMIC

isFullScreen = false
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteType_Dynamic", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
eyeSpriteX = 100
eyeSpriteY = 100
eyeSprite2X = 400
eyeSprite2Y = 125

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
SetSpriteSolid(eyeSprite, 1)

'When Sprites are created and physics activated there "type" is Dyanmic by default
'The sprites have collision and physics activated, so they can move and react to other bodies.

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, eyeSprite2X, eyeSprite2Y)
SetSpriteSolid(eyeSprite2, 1)

While Not Key(K_ESCAPE)

SetSpriteLinearVelocity(eyeSprite, 80, 0)

Update()
Wend

Here is an example of SPRITE_TYPE_STATIC:

'This is showing SPRITE_TYPE_STATIC

isFullScreen = false
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteType_Static", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
eyeSpriteX = 100
eyeSpriteY = 100
eyeSprite2X = 400
eyeSprite2Y = 125

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
SetSpriteSolid(eyeSprite, 1)

'When Sprites are created and physics activated there "type" is Dyanmic by default
'The sprites have collision and physics activated, so they can move and react to other bodies.

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, eyeSprite2X, eyeSprite2Y)
SetSpriteSolid(eyeSprite2, 1)
SetSpriteType(eyeSprite2, SPRITE_TYPE_STATIC) 'When a sprite is made solid nothing can move it

While Not Key(K_ESCAPE)

SetSpriteLinearVelocity(eyeSprite, 80, 0)

Update()
Wend

Finally here is an example of SPRITE_TYPE_KINEMATIC:

'This is showing SPRITE_TYPE_KINEMATIC

isFullScreen = false
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteType_Kinematic", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
eyeSpriteX = 100
eyeSpriteY = 100
eyeSprite2X = 400
eyeSprite2Y = 125

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
SetSpriteSolid(eyeSprite, 1)
SetSpriteType(eyeSprite, SPRITE_TYPE_KINEMATIC) 'KINEMATIC type makes the sprite able to be moved, but it does not react to dynamic bodies.

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, eyeSprite2X, eyeSprite2Y)
SetSpriteSolid(eyeSprite2, 1)

While Not Key(K_ESCAPE)

SetSpriteLinearVelocity(eyeSprite, 80, 0)

Update()
Wend

See also

GetSpriteType()


Function GetSpriteType(sprite)

Returns the collision body type of a sprite.

By default, sprites are dynamic when they are created.

Possible types returned:

  • SPRITE_TYPE_STATIC(0)
  • SPRITE_TYPE_KINEMATIC(1)
  • SPRITE_TYPE_DYNAMIC(2)
isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("GetSpriteType", winWidth, winHeight, isFullScreen, vSync)
pCanvas = OpenCanvas(200, 80, 0, 0, 200, 80, 1) 'Need to open a canvas for drawing the text
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM eye
DIM eyeW
DIM eyeH
eyeSpriteX = 100
eyeSpriteY = 100
eyeSprite2X = 400
eyeSprite2Y = 125

DIM font1

Font1 = LoadFont("DripOctober.ttf", 16)
SetFont(Font1)
SetColor(RGB(100, 200, 200))

eye = LoadImage("theEye.png")
GetImageSize(eye, eyeW, eyeH)

eyeSprite = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite, eyeSpriteX, eyeSpriteY)
SetSpriteSolid(eyeSprite, 1)
SetSpriteType(eyeSprite, SPRITE_TYPE_KINEMATIC)

'The flags for each type are SPRITE_TYPE_STATIC = 0
' SPRITE_TYPE_KINEMATIC = 1
' SPRITE_TYPE_DYNAMIC = 2

eyeSprite2 = CreateSprite(eye, eyeW, eyeH)
SetSpritePosition(eyeSprite2, eyeSprite2X, eyeSprite2Y)
SetSpriteSolid(eyeSprite2, 1)
SetSpriteType(eyeSprite2, SPRITE_TYPE_DYNAMIC)

While Not Key(K_ESCAPE)
ClearCanvas()
Canvas(sCanvas)

Canvas(pCanvas) 'change to the standard drawing canvas for drawing text

DrawText("Sprite on left type: " + STR$(GetSpriteType(eyeSprite)), 10, 30)

Update()
Wend

See also

SetSpriteType()


Sub SetSpriteSource(sprite, img)

Changes the image source for a sprite frame sheet.

Note: This needs to be the same size as the current image source or you will have rendering issues.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("SetSpriteSource", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM frown
DIM frownW
DIM frownH

frowny1 = LoadImage("frowny1.png")
frowny2 = LoadImage("frowny2.png")
GetImageSize(frown, frownW, frownH)

frownSprite = CreateSprite(frown, frownW, frownH)
SetSpritePosition(frownSprite, 100, 100)

While Not Key(K_ESCAPE)
If KEY(K_SPACE) Then
SetSpriteSource(frownSprite, frowny2)
End If
Update()
Wend

Function GetSpriteSource(sprite)

Returns the source image the sprite renders its frames from.

isFullScreen = false 
vSync = true
winWidth = 640
winHeight = 480
canViewPortX = 0
canViewPortY = 0

OpenWindow("GetSpriteSource", winWidth, winHeight, isFullScreen, vSync)
sCanvas = OpenCanvasSpriteLayer(canViewPortX, canViewPortY, winWidth, winHeight)
Canvas(sCanvas)

DIM frown
DIM frownW
DIM frownH
DIM spSource$

frowny1 = LoadImage("frowny1.png")
frowny2 = LoadImage("frowny2.png")
GetImageSize(frown, frownW, frownH)

frownSprite = CreateSprite(frown, frownW, frownH)
SetSpritePosition(frownSprite, 100, 100)

While Not Key(K_ESCAPE)
If Key(K_SPACE) Then
SetSpriteSource(frownSprite, frowny2)
End If
Update()
spSource$ = STR$(GetSpriteSource(frown))
Print spSource$
Wend

Function GetSpriteCollision(spriteA, spriteB)

Returns TRUE if two sprites collide.


Function SpriteExists(sprite)

Returns true if the sprite id is a valid sprite id.


Sub SetSpriteColorMod(sprite, color)

Sets the color modulation of a sprite.


Sub SetSpriteAlpha(sprite, alpha)

Sets the alpha value of a sprite.


Function GetSpriteColorMod(sprite)

Function GetSpriteAlpha(sprite)

Returns the alpha value of a sprite.


Function AddSpriteChild(sprite, child_sprite, x, y)

Adds a sprite as a child to another sprite. Child sprite is offset by given position.


Sub RemoveSpriteChild(sprite, child_index)

Removes the child at the given index from the parent sprite.

See also

AddSpriteChild()


Function GetSpriteChildIndex(sprite, child_sprite)

Returns the index a child_sprite is stored at in a parent sprite.

Returns -1 if child_sprite is not a child of sprite.