循环中的多个图像
multiple images in a loop fabricjs
我已经剥离了我的提琴来显示我的问题。
我有一个矩形,我正在循环,所以它给出了不同的名称与多个实例。我可以很好地添加和删除矩形。我的问题是,我用一个图像替换这个矩形,我可以让它循环,但它只会删除一个图像,而不是所有的。我想我的名字起错了,但是我不能透过树木看到森林。
JSFiddle
var canvas = new fabric.Canvas('c', { selection: false });
var land = [];
var turret = [];
var wh=[];
var op=[];
//////////////////////////////////////////////////////////////////
// Outpost Level Dropmenu Select
$(document).ready(function () {$('#method').change(
function () {
var method = $('option:selected').val();
if (this.value == "0") {
for (var i=0; i<96; i++){
canvas.remove(land[i]);
canvas.remove(turret[i]);
canvas.remove(wh[i]);
canvas.remove(op[i]);
};
} else if (this.value == "1") {
//Clear All
for (var i=0; i<96; i++){
canvas.remove(land[i]);
canvas.remove(turret[i]);
canvas.remove(wh[i]);
};
//Add Buildings
for (var i=0; i<40; i++){
land[i] = new fabric.Rect({
fill: 'green',left: 25,top: 25,width: 25,height: 25,
perPixelTargetFind: true,hasBorders: false,hasControls:false, hasRotatingPoint: false,
});
canvas.add(land[i])
};
for (var i=0; i<6; i++){
turret[i] = new fabric.Rect({
fill: 'brown',left: 75,top: 25,width: 15,height: 15,
perPixelTargetFind: true,hasBorders: false,hasControls: false,hasRotatingPoint: false,
});
canvas.add(turret[i])
};
for (var i=0; i<3; i++){
fabric.Image.fromURL('http://www.ahoymearty.co.uk/baseplanner2/images/buildings/warehouse.png', function(myImgwh) {wh[i] = myImgwh.set({ left: 25, top: 75 ,width:25,height:25, hasControls: false, hasRoatatingPoint: false,stroke: 'blue',strokeWidth: 1,
});
canvas.add(wh[i]);
});
};
}
});
});
所有3个图像都与i
的引用同步添加,当添加所有图像时,i
的引用为3。如果你看你的" wh "数组你有一堆未定义的然后只有一个对象被添加到数组中。这就是为什么你只能删除一个对象。
这个JSFiddle只是在回调中获得一个新的id,它正确地设置了数组,然后它们可以被删除,因为现在您将拥有所有正确的引用。
如果清除整个画布是可以接受的,那么你可以使用context
-fiddle在这里https://fiddle.jshell.net/2xozu3wk/在这个查询中讨论如何从html画布中绘制,隐藏,删除或删除图像?我认为除了一张图片外,你的所有图片都是在画布上绘制的,而图片以一种不太容易清理的方式绘制像素。或者,您可以清空画布并恢复您希望保留的元素,但要为闪烁做好准备?
var canvas = new fabric.Canvas('c', { selection: false });
var context = canvas.getContext('2d');
.
.
.
if (this.value == "0") {
context.clearRect(0, 0, canvas.width, canvas.height);
}
不知道是否有帮助
相关文章:
- 循环浏览多个身体背景图像
- 使用javascript的图像替换循环
- 在ng重复循环中显示来自不同文件夹的图像
- JavaScript中的数组图像循环
- 循环以检查数组中的最后一个图像
- javascript背景图像位置循环
- jQuery循环寻呼机附加较小的图像大小
- 每第n个图像具有下一个循环的余数偏移
- Jquery图像循环问题
- jQuery 单循环图像循环
- Javascript图像循环器
- 如何在页面上的多个缩略图集的鼠标悬停时实现 jQuery 图像循环
- 寻找一种在一个页面上运行多个图像循环仪的方法
- window.打开多个设置间隔的图像循环
- 图像循环加载不到位
- 更改图像,点击(6图像循环)
- 图像循环-重新循环
- 褪色图像循环jQuery
- 如何添加onclick到简单的js图像循环
- jQuery动画制作幻灯片图像循环在同一个方向上迭代