isu*_*uru 5 javascript canvas fabricjs
这个问题属于fabricJS和canvas.在下面的案例中,检查是否有任何对象属性为true(obj.background == true).画布上可以有几个图像.在第一个对象检测之后,我想终止循环.我是怎么做到的 我曾经使用return false;但不起作用.这是功能.
canvas.forEachObject(function(obj){
if(obj.isType('image') && obj.hasOwnProperty('background')){
if(!obj.background == true){
alert("true");
return false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
现在我还没有使用FabricJS(等待已经下来投票的垃圾邮件),看源头有一种getObjects()方法.这样做是返回一个对象数组而不是像自定义迭代器那样forEachObject().
因此,与,你可以使用所有的普通阵列itteration方法,如forEach(),some(),every()等,这将让你做你的愿望.
所以我的理解是你要检查对象是否是一个图像,如果它的background属性为true,并在第一次出现时中止循环?这应该做到这一点.
canvas
.getObjects()
.some(obj => {
if (obj.isType('image') && obj.hasOwnProperty('background') && obj.background === true) {
console.log('Aww shucks, you found me.');
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
显然这是伪代码.基本上它会循环所有对象并在您返回时中止true.如果任何元素确实返回,true则返回值some也将是true.
在MichałDopieralski评论之后编辑.
我忽略了getObjects可以传递一个类型的事实并将为您过滤结果.所以使用这些东西变得更简单.
canvas
.getObjects('image')
.some(obj => {
if (obj.background === true) {
console.log('Aww shucks, you found me.');
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:在旁注hasOwnProperty不应该检查我不认为.只要obj定义了,那么访问不存在的属性将返回undefined.哪个会=== true检查失败.
| 归档时间: |
|
| 查看次数: |
910 次 |
| 最近记录: |