123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- import AnimationItem from './AnimationItem';
- import CanvasRenderer from '../renderers/CanvasRenderer';
- import dataManager from '../utils/DataManager';
- import {
- getExpressionsPlugin,
- } from '../utils/common';
- AnimationItem.prototype.setParams = function (params) {
- if (params.context) {
- this.context = params.context;
- }
- var animType = 'svg';
- if (params.animType) {
- animType = params.animType;
- } else if (params.renderer) {
- animType = params.renderer;
- }
- switch (animType) {
- case 'canvas':
- this.renderer = new CanvasRenderer(this, params.rendererSettings);
- break;
- default:
- throw new Error('Only canvas renderer is supported when using worker.');
- }
- this.renderer.setProjectInterface(this.projectInterface);
- this.animType = animType;
- if (params.loop === ''
- || params.loop === null
- || params.loop === undefined
- || params.loop === true) {
- this.loop = true;
- } else if (params.loop === false) {
- this.loop = false;
- } else {
- this.loop = parseInt(params.loop, 10);
- }
- this.autoplay = 'autoplay' in params ? params.autoplay : true;
- this.name = params.name ? params.name : '';
- this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;
- this.assetsPath = null;
- if (params.animationData) {
- dataManager.completeAnimation(
- params.animationData,
- this.configAnimation
- );
- } else if (params.path) {
- throw new Error('Canvas worker renderer cannot load animation from url');
- }
- };
- AnimationItem.prototype.setData = function () {
- throw new Error('Cannot set data on wrapper for canvas worker renderer');
- };
- AnimationItem.prototype.includeLayers = function (data) {
- if (data.op > this.animationData.op) {
- this.animationData.op = data.op;
- this.totalFrames = Math.floor(data.op - this.animationData.ip);
- }
- var layers = this.animationData.layers;
- var i;
- var len = layers.length;
- var newLayers = data.layers;
- var j;
- var jLen = newLayers.length;
- for (j = 0; j < jLen; j += 1) {
- i = 0;
- while (i < len) {
- if (layers[i].id === newLayers[j].id) {
- layers[i] = newLayers[j];
- break;
- }
- i += 1;
- }
- }
- this.animationData.__complete = false;
- dataManager.completeAnimation(this.animationData);
- this.renderer.includeLayers(data.layers);
- var expressionsPlugin = getExpressionsPlugin();
- if (expressionsPlugin) {
- expressionsPlugin.initExpressions(this);
- }
- this.loadNextSegment();
- };
- AnimationItem.prototype.loadNextSegment = function () {
- var segments = this.animationData.segments;
- if (!segments || segments.length === 0 || !this.autoloadSegments) {
- this.timeCompleted = this.totalFrames;
- return;
- }
- throw new Error('Cannot load multiple segments in worker.');
- };
- AnimationItem.prototype.loadSegments = function () {
- var segments = this.animationData.segments;
- if (!segments) {
- this.timeCompleted = this.totalFrames;
- }
- this.loadNextSegment();
- };
- AnimationItem.prototype.imagesLoaded = null;
- AnimationItem.prototype.preloadImages = null;
- AnimationItem.prototype.configAnimation = function (animData) {
- if (!this.renderer) {
- return;
- }
- this.animationData = animData;
- this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);
- this.renderer.configAnimation(animData);
- if (!animData.assets) {
- animData.assets = [];
- }
- this.renderer.searchExtraCompositions(animData.assets);
- this.assets = this.animationData.assets;
- this.frameRate = this.animationData.fr;
- this.firstFrame = Math.round(this.animationData.ip);
- this.frameMult = this.animationData.fr / 1000;
- this.loadSegments();
- this.updaFrameModifier();
- this.checkLoaded();
- };
- AnimationItem.prototype.waitForFontsLoaded = null;
- AnimationItem.prototype.checkLoaded = function () {
- if (!this.isLoaded) {
- this.isLoaded = true;
- var expressionsPlugin = getExpressionsPlugin();
- if (expressionsPlugin) {
- expressionsPlugin.initExpressions(this);
- }
- this.renderer.initItems();
- this.gotoFrame();
- }
- };
- AnimationItem.prototype.destroy = function (name) {
- if ((name && this.name !== name) || !this.renderer) {
- return;
- }
- this.renderer.destroy();
- this._cbs = null;
- this.onEnterFrame = null;
- this.onLoopComplete = null;
- this.onComplete = null;
- this.onSegmentStart = null;
- this.onDestroy = null;
- this.renderer = null;
- };
- AnimationItem.prototype.getPath = null;
|