The aim of this project is to provide a fast lightweight 2D library that works across all devices. The PixiJS renderer allows everyone to enjoy the power of hardware acceleration without prior knowledge of WebGL. Also, it's fast. Really fast.
We are now a part of the Open Collective and with your support you can help us make PixiJS even better. To make a donation, simply click the button below and we'll love you forever!
PixiJS can be installed with npm to integrate with Webpack, Browserify, Rollup, Electron, NW.js or other module backed environments.
npm install @pixi/webworker
There is no default export. The correct way to import PixiJS is:
import * as PIXI from '@pixi/webworker';
Via jsDelivr:
importScripts('https://cdn.jsdelivr.net/npm/pixi.js-webworker@7.x/dist/pixi-webworker.min.js');
Or via unpkg:
importScripts('https://unpkg.com/pixi.js-webworker@7.x/dist/pixi-webworker.min.js');
In index.js
:
// Create a canvas element and insert it into DOM
const width = 800, height = 600;
const resolution = window.devicePixelRatio;
const canvas = document.createElement('canvas');
canvas.style.width = `${ width }px`;
canvas.style.height = `${ height }px`;
document.body.appendChild(canvas);
// Create the worker
const worker = new Worker('worker.js', { type: 'module' });
// Transfer canvas to the worker
const view = canvas.transferControlToOffscreen();
worker.postMessage({ width, height, resolution, view }, [view]);
In worker.js
:
import { Application, Assets, Sprite } from '@pixi/webworker';
self.onmessage = async e => {
// Recieve OffscreenCanvas from index.js
const { width, height, resolution, view } = e.data;
// The application will create a renderer using WebGL, if possible,
// with a fallback to a canvas render. It will also setup the ticker
// and the root stage PIXI.Container
const app = new Application({ width, height, resolution, view });
// load the texture we need
const texture = await Assets.load('assets/bunny.png');
// This creates a texture from a 'bunny.png' image
const bunny = new Sprite(texture);
// Setup the position of the bunny
bunny.x = app.renderer.width / 2;
bunny.y = app.renderer.height / 2;
// Rotate around the center
bunny.anchor.x = 0.5;
bunny.anchor.y = 0.5;
// Add the bunny to the scene we are building
app.stage.addChild(bunny);
// Listen for frame updates
app.ticker.add(() => {
// each frame we spin the bunny around a bit
bunny.rotation += 0.01;
});
}
This content is released under the (http://opensource.org/licenses/MIT) MIT License.