Javascript KineticJS:.SetFill对多边形更新填充属性,但不';不要用颜色填充它

Javascript KineticJS:.SetFill对多边形更新填充属性,但不';不要用颜色填充它,javascript,kineticjs,Javascript,Kineticjs,我有一个现有的代码库,它创建了一个阶段,然后添加了一些层,并在其中一层中绘制了KineticJS多边形。现在,当用户单击舞台外的元素时,我需要更新多边形的背景 我已经设法获得了阶段细节,然后是我想要更改的确切多边形,还设法用.SetFill方法更改了填充多边形。当我访问多边形的属性时,我看到填充属性设置正确。但是多边形的背景并没有改变 在.SetFill函数之后,我们需要做什么?或者,在创建KineticJS形状后,更改/更新其填充的正确方法是什么?我没有看到任何更新或重画方法 代码在Cloju

我有一个现有的代码库,它创建了一个阶段,然后添加了一些层,并在其中一层中绘制了KineticJS多边形。现在,当用户单击舞台外的元素时,我需要更新多边形的背景

我已经设法获得了阶段细节,然后是我想要更改的确切多边形,还设法用
.SetFill
方法更改了
填充
多边形。当我访问多边形的属性时,我看到填充属性设置正确。但是多边形的背景并没有改变

.SetFill
函数之后,我们需要做什么?或者,在创建KineticJS形状后,更改/更新其填充的正确方法是什么?我没有看到任何更新或重画方法

代码在Clojurescript中,因此我没有确切的JS代码,但我有以下步骤:

  • polygon.setFill(彩色六角编码)
  • 图层。添加(多边形)
  • stage.add(层)
  • stage.draw()

  • 下面是使用
    setAttrs
    方法更新多边形背景的动能.js示例。更改后,使用
    batchDraw
    方法更新图层

    let索引=0;
    常量颜色=[
    [0,'黄色',1,'红色'],
    [0'红色',1'黄色']
    ];
    document.querySelector(“#container”).addEventListener('click',function(){
    如果(index++>0)index=0;
    多边形.setAttrs({
    fillLinearGradientColorStops:颜色[索引]
    });
    //图层的强制更新
    layer.batchDraw();
    });
    常数阶段=新的动力学阶段({
    容器:'容器',
    宽度:615,
    身高:145
    });
    常数层=新的动能层();
    const polygon=新动能.RegularPolygon({
    x:stage.width()/2,
    y:舞台高度()/2,
    双方:5,,
    半径:70,
    fillLinearGradientStartPoint:{
    x:-50,
    y:-50
    },
    fillLinearGradientEndPoint:{
    x:50,
    y:50
    },
    fillLinearGradientColorStops:颜色[索引],
    笔画:“黑色”,
    冲程宽度:4,
    德拉格布尔:是的
    });
    图层添加(多边形);
    阶段。添加(层);
    stage.draw()
    
    
    
    单击或拖动多边形
    尝试触发
    layer.draw()
    函数更改背景后,再查看以下资源,这可能是由于KineticJS的缓存问题。我可以知道为什么这个问题被否决了吗?它遗漏了什么吗?只有投反对票的人才能回答:D,无论如何,你能在JSFIDLE或类似的东西上创建一段代码吗?不幸的是,我不能,因为它是用Clojurescript写的。如果Clojurescript中有类似于JSFIDLE的东西,我会非常喜欢!我试着发射layer.draw(),但没有成功。我现在正在尝试其他选择。谢谢你的努力。batchDraw方法也没有更新。我最终做了一个变通办法:删除所有的子项,并用填充的颜色重新绘制所有内容。虽然很难看,但它很管用。