Package detail

@bijection/smoke

bijection144MIT1.0.2

Tiny, fancy, javascript canvas smoke effect.

smoke, effect, canvas, smoke.js

readme

Demo

You can play with a live demo here →

Installation

Basic

Copy the smoke.js file into your project and use it with a script tag:

<script src="smoke.js"></script>

That defines a SmokeMachine global that you can use to make smoke (see examples below).

Package Manager

You can also use yarn or npm:

yarn add @bijection/smoke
npm add @bijection/smoke

Thern you can import or require smoke.js like this:

import SmokeMachine from '@bijection/smoke'
var SmokeMachine = require('@bijection/smoke')

Usage

Short Example

var ctx = canvas.getContext('2d')

var party = SmokeMachine(ctx)
party.addSmoke(500,500)
party.start()

Copy-Pastable Example

<canvas id="canvas"></canvas>
<script src="smoke.js"></script>
<script>
    var canvas = document.getElementById('canvas')
    var ctx = canvas.getContext('2d')
    canvas.width = 1000
    canvas.height = 1000

    var party = SmokeMachine(ctx, [54, 16.8, 18.2])

    party.start() // start animating

    party.addSmoke(500,500,10) // wow we made smoke

    setTimeout(function(){

        party.stop() // stop animating

        party.addSmoke(600,500,100)
        party.addSmoke(500,600,20)

        for(var i=0;i<10;i++){
            party.step(10) // pretend 10 ms pass and rerender
        }

        setTimeout(function(){
            party.start()
        },1000)

    },1000)
</script>

API

SmokeMachine(context, [r,g,b])

Returns a smoke machine that makes smoke.

  • context — the context of the canvas we wanna draw smoke on
  • [r,g,b] — (optional) the color we want the smoke to be
var party = SmokeMachine(context, [1,5,253])

party.start()

Start Animating!!

party.stop()

Stop animating :(

party.addSmoke(x,y,numberofparticles)

  • x,y — the coords at which the smoke should be created in the canvas
  • numberofparticles — more makes more smoke

party.step(milliseconds)

redaws the smoke as if milliseconds milliseconds have passed