Şimdi ben kullanmadıysanız FabricJS bir getObjects()
yöntem yoktur kaynağına bakarak (aşağı-oyların Spam zaten bekliyor). Bu, forEachObject()
gibi özel bir yineleyici yerine bir dizi nesne döndürür.
Böylece forEach()
, some()
, every()
vb. Gibi tüm normal dizi itterasyon yöntemlerini kullanabilirsiniz.
Anlayışım, nesnenin bir resim olup olmadığını ve arka plan özelliğinin true olup olmadığını kontrol etmek ve ilk oluşumda döngüyü iptal etmek mi istiyorsunuz? Bu yapmalı.
canvas
.getObjects()
.some(obj => {
if (obj.isType('image') && obj.hasOwnProperty('background') && obj.background === true) {
console.log('Aww shucks, you found me.');
return true;
}
});
Açıkçası bu, sözde koddur. Esasen, tüm nesneleri döndürecek ve dönüşünüz true
ise iptal edilecektir. Herhangi bir öğe true
döndürürse, some
döndürme değeri de true
olacaktır. Michał Dopieralski'den sonra DÜZENLEME.
Ben getObjects
bir tür geçirilmiş olabilir ve sizin için sonuçları filtreleyecek. Yani bu şeyleri kullanmak daha da basitleşiyor.
array some docs
fabricjs getObjects source
EDIT'e
canvas
.getObjects('image')
.some(obj => {
if (obj.background === true) {
console.log('Aww shucks, you found me.');
return true;
}
});
:
hasOwnProperty
çek i sanmıyorum gerekli olmamalıdır Yan not.
obj
tanımlandığı sürece, mevcut olmayan bir özelliğe erişim
undefined
döndürecektir. Hangi
=== true
kontrol başarısız olur.
İçinde bir "bayrak" olabilir .. Ama bir döngü sonlandırmak istiyorsanız, "for-loop ... break" ile gidin; – Rayon
Devam et? – Phil795
Benzer şekilde, forEachObject', her nesne 'işlevine (obj)' karşı yapılmadan önce döngüyü sonlandırmak için tasarlanmamıştır. Normal for döngüsü kullanmayı düşünebilirsiniz. – Ian