A tiny (~2kb gzipped) platform for JavaScript creative coding.
A few examples from the showcase
sketch.js lets you get straight to the fun parts of creative coding, without ever having to worry about shims or boilerplate code.
It gives you a graphics context, an animation loop, normalised input events and a host of useful callbacks to hook into.
Here's an example:
Sketch.create({
setup() {
this.r = this.g = this.b = random(100, 200)
},
mousemove() {
this.r = 255 * (this.mouse.x / this.width)
this.g = 255 * (this.mouse.y / this.height)
this.b = 255 * abs(cos(PI * this.mouse.y / this.width))
},
draw() {
this.fillStyle = `rgb(${~~this.r},${~~this.g},${~~this.b})`
this.fillRect(0, 0, this.width, this.height)
}
})
- A sketch is an augmented drawing context (
CanvasRenderingContext2D
,WebGLRenderingContext
orHTMLElement
) so it has all the expected drawing methods built in. - The
mouse
property is also the first element of thetouches
array and vice versa, so you can code to one standard and get touch and multi-touch support for free. - The
update
anddraw
loops run on the browser animation frame and canstop
andstart
whenever you like. - You get fast access to
Math
functions and constants, plus extras like range and array enabledrandom
,map
andlerp
. - Simple and configurable. You can even bring your own
context
, so it works well with libraries like THREE.
For more information, check out the getting started guide, the API, the many examples in the showcase and the full source.