我有一个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
函数。
所以有两个问题,是否有任何方法可以检查是否存在一个函数名称已经存在于数组中,例如 Array.indexOf
?或者是否已经有一些预构建的方法在KineticJS中,但我还没有见过它们?