【发布时间】:2020-01-17 07:44:42
【问题描述】:
我正在使用一个图像编辑器,我想在其中将图像添加到带有动画的画布中。 我尝试覆盖 canvas.add() 方法但无法播放动画。
我使用的是 Fabric js 版本 1.7.22。 当我尝试谷歌搜索时。我找到了一种使用动画添加对象的解决方案,但在那个演示中,他们使用自定义新方法“fxadd()”来添加对象。
这里是参考链接: https://github.com/fabricjs/fabric.js/issues/77
但是我的代码太长了,根本不想替换函数名。 有什么方法可以覆盖现有的面料 canvas.add() 方法然后请帮助我。
fabric.Canvas.prototype.add = (function(object, callback) {
return function() {
console.log('add into canvas', this);
this.add(object); // here call self method which result in infinit loop
object.animate('top', '100', {
onChange: this.renderAll.bind(this),
duration: 1000,
easing: fabric.util.ease.easeOutElastic,
onComplete: function() {}
});
};
})(fabric.Canvas.prototype.add);
var canvas = new fabric.Canvas('canvas1')
var btn = document.getElementById('animate');
btn.addEventListener('click', function() {
canvas.clear();
setTimeout(function() {
run();
}, 800);
});
var run = function() {
var rect = new fabric.Rect({
left: 50,
top: 10,
fill: 'red',
width: 100,
height: 100,
});
canvas.add(rect)
}
【问题讨论】:
-
我尝试覆盖 canvas.add() - 你能具体说明你尝试了什么,什么没用吗?
-
这里是小提琴:jsfiddle.net/Mark_1998/h24u0ncm 请阅读小提琴中的评论。我已经写出了产生这个问题的原因。
标签: javascript animation html5-canvas fabricjs add