proton-engine
v7.1.5
Published
Proton is a simple and powerful javascript particle animation engine.
Downloads
7,251
Readme
Proton is a lightweight and powerful Javascript particle animation library. Use it to easily create a variety of cool particle effects.
Check out examples at http://drawcall.github.io/Proton/. The 3D version of the proton engine is here here. An available react version is here.
Features
- Easy to use It takes only a dozen lines of code to create a particle animation effect.
- Multiple effects Use Proton to create flames, fireworks, bullets, explosions, and more.
- Any scene You can use it in frameworks such as
react
,vue
,angular
, andpixi.js
,Phaser
, etc. - Efficient rendering Its rendering efficiency is very high, you can render tens of thousands of particles in the page.
- Simulated physics Proton can simulate various physical properties including gravity and Brownian motion.
- Several renderers Proton provides a variety of renderers, of course you can also customize your own renderer
CanvasRenderer
- Proton's canvas rendererDomRenderer
- Proton's dom renderer, supporting hardware acceleration.WebGLRenderer
- Proton's webgl renderer.PixelRenderer
- Proton's pixel renderer, It can implement pixel animation.EaselRenderer
- Easeljs proton renderer.EaselRenderer
- Pixi.js proton renderer.CustomRenderer
- Use a custom renderer that can be applied to any scene.
Documentation
See detailed documentation please visit https://projects.jpeer.at/proton/. Thank you very much @matsu7089 for writing a good tutorial.
Installation
Install using npm
Note: NPM package-name has been changed from
proton-js
toproton-engine
npm install proton-engine --save
import Proton from "proton-engine";
OR include in html
<script type="text/javascript" src="js/proton.web.min.js"></script>
Usage
Proton is very simple to use, a dozen lines of code can create a particle animation.
import Proton, {
Emitter,
Rate,
Span,
Radius,
Life,
Velocity,
Color,
Alpha,
CanvasRenderer,
} from "proton-engine";
const proton = new Proton();
const emitter = new Emitter();
//set Rate
emitter.rate = new Rate(new Span(10, 20), 0.1);
//add Initialize
emitter.addInitialize(new Radius(1, 12));
emitter.addInitialize(new Life(2, 4));
emitter.addInitialize(new Velocity(3, new Span(0, 360), "polar"));
//add Behaviour
emitter.addBehaviour(new Color("ff0000", "random"));
emitter.addBehaviour(new Alpha(1, 0));
//set emitter position
emitter.p.x = canvas.width / 2;
emitter.p.y = canvas.height / 2;
emitter.emit(5);
//add emitter to the proton
proton.addEmitter(emitter);
// add canvas renderer
const renderer = new CanvasRenderer(canvas);
proton.addRenderer(renderer);
Remarks
Proton.Span
(orProton.getSpan
) is a very important concept of the Proton engine, it's everywhere. If you understand its usage, you can create almost any desired effect!If you want to create wind, rain, or snow, etc, you can use the
emitter.preEmit
method to pre-render the scene.Use
Proton.Body
andProton.Color
at the same time. I suggest you'd better use theWebGLRenderer
notCanvasRenderer
.Added
Proton.Cyclone
behavior, you can make vortex effects with Cyclone. Demo please check here.proton.fps
In modern browsers, if the FPS exceeds 60 and you want to maintain a stable 60 FPS, you need to setproton.fps = 60
. You can set this property when the game engine has fixed fps or some browsers have a higher refresh rate.Use Euler integration calculation is more accurate (default false)
Proton.USE_CLOCK = false or true;
.
Proton has now been upgraded to the v4 version. Performance has been greatly improved and api also has some improvements. For more details, please check here.
Building
node
is a dependency, use terminal to install it with:
git clone git://github.com/drawcall/Proton.git
...
npm install
npm run build
And run example
npm start
//vist http://localhost:3001/example/
Changelog
Detailed changes for each release are documented in the release notes.
License
Proton is released under the MIT License. http://www.opensource.org/licenses/mit-license