Render
xs provides functionality for rendering images, texts and a number of shapes.
Table of contents
Working with bitmaps
Rendering bitmaps (sprites) is the main way of putting graphics on the screen with xs.
import "xs" for Render
class Game {
//...
static initialize() {
}
static render() {
// Loads an image from <your_game>/textures folder
var img = Render.loadImage("[game]/textures/flower.png")
// Creates a sprite by taking a part (the bottom lower corner )
var spr = Render.createSprite(img, 0.0, 0.0, 0.5, 0.5)
// Renders the flower sprite
Render.sprite(spr,
100, // x
100, // y
0.0, // z (sorting)
2.0, // scale
Math.pi * 0.25, // rotation
0xFFDD00FF, // multiply color
0xDDFF00FF, // add color
Render.spriteCenter) // flags
}
//...
}
loadImage(path)
Loads an image using a realtive path.
getImageWidth(imageId)
Gets the width of an loaded image
getImageHeight(imageId)
Gets the height of an loaded image
createSprite(imageId, x0, y0, x1, y1)
Will create a new sprite from a part of an image, with the provided the texture coordinates
sprite(spriteId, x, y, z, scale, rotation, mul, add, flags)
Renders a sprite on the screen, takin the original size of the sprite, given a set of parameters:
spriteId
- Valid sprite ID, made withcreateSprite
(not an image ID)x
andy
- Position for this sprite on the screen, taking the offset into accountz
sorting (depth) valuescale
- Scaling factorrotation
- Rotation in radiansmul
- Color (represented as an number) that will be multiplied with the values of the spriteadd
- Color (represented as an number) that will be added to the values of the spriteflags
- Any combination of rendering bit flagsspriteBottom
- Anchored at the bottom leftspriteCenter
- Anchored at the centerspriteFlipX
- Flip the sprite horizontallyspriteFlipY
- Flip the sprite vertically
sprite(spriteId, x, y)
This is equivalent to calling:
sprite(spriteId, x, y, 0.0, 1.0, 0.0, 0xFFFFFFFF, 0x00000000, spriteBottom)
setOffset(x, y)
Will offset all render calls with the given values, until now values are set.
loadFont(font, size)
Loads a given font with a certain size into a font atlas.
text(fontId, text, x, y, z, mul, add, flags)
Renders a text string on the screen, taking the original size of the loaded font into account, given a set of parameters. They are the same as the sprite parameters.
- Known issue, the always text renders above the sprites.
Debug rendering
Debug rendering happens after all sprites have been finished rendering.
dbgColor(color)
Sets the color as a single 32bit number. Example:
Render.dbgColor(0xF0C0D0FF)
// ^ ^ ^ ^
// R G B A
dbgBegin(primitive)
Will start the rendering of a new primitive. This can be either triangles
or lines
. Provide vertices using vertex(x, y)
and call end()
when done to finish the the primitive. It’s not possible to draw the primitives within a being()
/end()
block.
dbgEnd()
Finish rendering a primitive. Providing number of vertices that does not match the type (divisible with 3 for triangles
and divisible by 2 for lines
) will result in an error.
dbgLine(x0, y0, x1, y1)
Draws a line from [x0,y0]
to [x1,y1]
dbgText(text, x, y, size)
Draws a shape text on the screen with a given size
dbgVertex(x, y)
Provide a vertex. This call only be called between being()
and end()
.