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