我在fabric js中创建了一个编辑器。我使用自定义图标进行旋转,这在iphone的谷歌浏览器中不可见。请给我解决方案。 此代码我用于自定义图标
isVML = function() { return typeof G_vmlCanvasManager !== 'undefined'; };
// overriding _drawControl method
fabric.util.object.extend(fabric.Object.prototype, {
hasRotatingPoint: true,
cornerSize: 25,
_drawControl: function(control, ctx, methodName, left, top) {
if (!this.isControlVisible(control)) {
return;
}
var size = this.cornerSize;
isVML() || this.transparentCorners || ctx.clearRect(left, top, size, size);
if(control !== 'mtr')
ctx['fillRect'](left, top, size, size);
var SelectedIconImage = new Image();
if(control === 'mtr') {
SelectedIconImage.src = 'http://s1.postimg.org/6lqguc8rf/rotate.jpg';
ctx.drawImage(SelectedIconImage, left, top, size, size);
}
}
});
这是jsfiddle
答案 0 :(得分:1)
这可能是图片加载问题。
if(control === 'mtr') {
if (this.isLoaded) {
ctx.drawImage(this.selectedIconImage, left, top, size, size);
} else {
var self = this;
this.selectedIconImage.onload = function() {
self.isLoaded = true;
ctx.drawImage(self.selectedIconImage, left, top, size, size);
}
this.selectedIconImage.src = this.iconSrc;
}
}
首先更新你的小提琴到fabricjs 1.5.0,这个功能在1.4.0上不起作用。
如您所见,您正在每帧抽奖时重新加载图标。这根本不是最佳的,可能会导致drawImage函数绘制一个仍然刷新的图像元素。
在iphone上尝试这个小提琴并检查它是否正常工作,可能不是先选择,但至少在移动物体时。