jcc2d v1.8.12
jcc2d
A canvas 2d renderer & An awesome animator
Show case
- refactor usopen-sessions main page
- particle effect
- 3D pictures cloud
- multi-segment animation
- sprites movieclip
- blur mask high performance filter
- skeleton draw by graphics
- skeleton draw by sprite
- check eventer pointer exact polygon
- varied timingfunction supported
- path motion animation
- after effect export
Introduction
jcc2d is a lightweight canvas2d-render engine and built-in an awesome animator with timeline manager. obviously, jcc2d support event system by default.
jcc2d built-in support bodymovin keyframes data, which use bodymovin add-on to exporting keyframes data from after effect, and jcc2d can parse the keyframes data to jcc2d keyFrames animation, just like following:
// parser all animation layers
const ani = new JC.ParserAnimation({
keyframes: data,
// fr: 30, // frame rate
// prefix: '', // assets url prefix
// infinite: true, // infinite loop
// alternate: true, // alternate
onUpdate() {},
onComplete() {
console.log(this.element);
},
});
// or you can just parser a single animation layer
const coin = new JC.Sprite({
texture: new JC.Texture('/path/coin.png'),
});
coin.keyFrames({
ks: data.layers[0], // bodymovin keyframes data
fr: 30, // overwrite frame rate
// infinite: true, // infinite loop
// alternate: true, // alternate, just like yoyo
onUpdate() {},
onComplete() {
console.log(this.element);
},
});Feature
jcc2d Include Stage Sprite Graphics Container BlurFilter TextFace and so on.
Every display instance can easy start an animation and attach a timeline, like following:
const ball = new JC.Sprite({
texture: new JC.Texture('/path/xx.png'),
});
const timeline = ball.animate({
from: {x: 100}, // start pose, optional
to: {x: 200}, // target pose
ease: JC.Tween.Bounce.Out, // set a timingfunction
repeats: 10, // repeat sometimes
delay: 1000, // delay a moment every repeat
wait: 1000, // wait a moment to start
infinite: true, // want infinite repeats?
alternate: true, // repeats with alternate
duration: 1000, // duration
onUpdate: function(state,rate){}, // onUpdate callback
onComplete: function(){ console.log('end'); } // onComplete callback
});
timeline.pause(); // pause animation progress
timeline.restart(); // restart animation progress, use with pause
timeline.stop(); // stop animation to end, will trigger onComplete callback
timeline.cancle(); // cancle animation right now, will not trigger onComplete callback
timeline.timeScale = 0.5; // set timeScale, get a Slow motion,just like speed * 0.5Display animation property
| type | property |
|---|---|
| display instance scale value | scale scaleX scaleY |
| display instance origin | originX originY |
| display instance pivot | pivotX pivotY |
| display instance skew value | skewX skewY |
| display instance rotation with CCW | rotation |
| display instance coordinate axis position | x y |
| display instance opacity alpha | alpha |
Quick Start
jcc2d was so easy to use, you just need new a Stage instance and appoint a canvas dom, then you can add every display object into stage.
const stage = new JC.Stage({
dom: 'canvas-stage',
resolution: 1, // was normal
});
const coin = new JC.Sprite({
texture: new JC.Texture('/path/coin.png'),
});
stage.adds(coin);
stage.startEngine(); // the coin would be renderjcc2d built-in support timeline animation , you can start multiple animation. let's use coin to show.
/* start a animate */
coin.animate({
from: { x: 100, rotation: 0 },
to: { x: 300, rotation: 360 },
... // other options
});
/* start a motion */
coin.motion({
path: new JC.BezierCurve([...]), // coin will move along with this path
... // other options
});
/* start a runners */
coin.runners({ // combination multiple animation and run one by one
runners: [
{from: {}, to: {}, ease: JC.Tween.Back.In, ...},
{path: new JC.BezierCurve([...]), ease: JC.Tween.Ease.Bezier(0, 0, 1, 1), ...},
{to: {}, ease: JC.Tween.Back.Out, ...},
],
... // other options
});would like to know more information please look in documentation, or quick start a living edit in web runing man.
Documentation
jcc2d source code was used ES6 Modules and build to UMD bundle by rollup. so jcc2d can support tree-shaking seamless.
// import all over the modules
import * as JC from 'jcc2d';
// import modules which you need, allow tree-shaking
import { Stage, Sprite, Graphics } from 'jcc2d';and if you just want use UMD bundle, you can use require method
// require jcc2d
const JC = require('jcc2d');
// require a lightweight jcc2d
const JC = require('jcc2d/build/jcc2d.light.js');Examples
Changelog
License
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago