| name | example-canvas |
| description | Patterns for using Helios with Vanilla Canvas API. Use when building high-performance 2D/3D animations without frameworks. |
Vanilla Canvas Patterns
Use Helios directly with the HTML5 Canvas API. This provides the lowest overhead and highest performance.
Quick Start
1. HTML Setup
<canvas id="canvas"></canvas>
<script type="module" src="./main.js"></script>
2. Logic Setup
import { Helios } from '@helios-project/core';
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const width = 1920;
const height = 1080;
canvas.width = width;
canvas.height = height;
const helios = new Helios({
duration: 5,
fps: 60
});
helios.bindToDocumentTimeline();
window.helios = helios;
function draw(frame) {
ctx.clearRect(0, 0, width, height);
const time = frame / helios.fps;
const t = time / helios.duration;
const x = t * (width - 100);
ctx.fillStyle = 'tomato';
ctx.fillRect(x, height / 2 - 50, 100, 100);
}
helios.subscribe((state) => {
draw(state.currentFrame);
});
draw(0);
Performance Tips
- Pre-calculate values: Do heavy math (like sine tables or physics simulations) upfront if possible.
- OffscreenCanvas: For very complex scenes, consider rendering in a Web Worker using
OffscreenCanvas to keep the main thread free.
- Batch Draw Calls: Minimize context state changes (
fillStyle, strokeStyle, etc).
Source Files
- Example:
examples/simple-canvas-animation/