Лотти Анимация на холсте фабрики - PullRequest
0 голосов
/ 31 августа 2018

Можно ли загрузить анимацию Lottie в fabricjs canvas

Я пробовал следующие образцы

    bodymovin.loadAnimation({
          wrapper: animateElement,       // div element
          loop: true,
          animType: 'canvas',            // fabricjs canvas
          animationData: dataValue,      // AE json
          rendererSettings: {
             scaleMode: 'noScale',
             clearCanvas: true, 
             progressiveLoad: false, 
             hideOnTransparent: true,
           }
       });
canvas.add(bodymovin);
canvas.renderAll();

Я не могу добавить анимацию в полотно js canvas. если кто-нибудь преодолеет эту проблему, пожалуйста, прокомментируйте ее

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Я могу опоздать, чтобы ответить на этот вопрос, но для любого, кто ищет, эта ручка может дать вам несколько указателей: https://codepen.io/shkaper/pen/oEKEgG

Идея здесь, прежде всего, состоит в том, чтобы расширить fabric.Image класс, переопределяющий его внутренний метод рендеринга, для рендеринга содержимого произвольного холста, который вы сами предоставляете:

fabric.AEAnimation = fabric.util.createClass(fabric.Image, {
  drawCacheOnCanvas: function(ctx) {
    ctx.drawImage(this._AECanvas, -this.width / 2, -this.height / 2);
  },
})

Вы можете сделать этот холст аргументом конструктора, например,

initialize: function (AECanvas, options) {
  options = options || {}
  this.callSuper('initialize', AECanvas, options)
  this._AECanvas = AECanvas
},

Тогда вам просто нужно использовать средство рендеринга холста lottie, чтобы нарисовать анимацию на холсте и передать ее в новый объект fabric.AEAnimation.

0 голосов
/ 10 сентября 2018

Я бы предположил, что, комбинируя ваш код с чем-то похожим на https://itnext.io/video-element-serialization-and-deserialization-of-canvas-fc5dbf47666d. В зависимости от вашего сценария вы можете обойтись без использования чего-то вроде http://fabricjs.com/interaction-with-objects-outside-canvas

...