У меня есть объект изображения kinecticjs. Я применяю фильтры на основе некоторых параметров, однако, когда его нужно перерисовать, он снова применит фильтр, что означает, что он будет дублировать фильтр.Проверить, существует ли функция в массиве
Я знаю, что я должен делать какую-то проверку, но она применяет функцию к массиву.
//create object
var image = new Kinetic.Image({
image: alreadyLoadedImageObject
});
function addFilter(shouldAdd){
if(shouldAdd){
var filters = image.filters() || [];
filters.push(Kinetic.Filters.RGB);
image.filters(filters);
}
}
layer.add(image);
stage.add(layer);
addFilter(true);
stage.draw();
setTimeout(function(){
addFilter(true);
stage.draw();
},500);
Это должно примерно показать, что я сейчас делаю, в этом случае, как только время выхода работает там будет 2 Kinetic.Filters.RGB
применяется к объекту изображения.
Я рассматриваю этот общий вопрос javascript, а не только kineticjs, так как корень в том, что мне нужно как-то знать, что в массиве фильтров уже есть функция Kinetic.Filters.RGB
.
Так что 2 вопроса, есть ли что-нибудь, чтобы проверить с чем-то вроде Array.indexOf
, что имя функции уже существует в массиве? или в KineticJS уже есть какой-то готовый метод, которого я не видел?
Никогда не думал, что это сработает, все, что я видел, сказал, что indexOf был только строкой. Я закончил с другим решением, которое соответствовало моему проекту, но это хорошо знать, протестировав его с помощью jsfiddle здесь http://jsfiddle.net/q3umxbcz/ – user2924536