Javascript 如何在EaselJS中更新径向渐变填充颜色

Javascript 如何在EaselJS中更新径向渐变填充颜色,javascript,animation,canvas,createjs,easeljs,Javascript,Animation,Canvas,Createjs,Easeljs,我正在为javascript画布动画在easelJS中构建一个径向渐变填充圆: const blur1 = new createjs.Shape(); const endColor = this.hexToRGBA(data.settings.startColor,0); blur1.circleCmd = blur1.graphics.beginRadialGradientFill([data.settings.startColor,endColor], [.25, .9], 0, 0, 0,

我正在为javascript画布动画在easelJS中构建一个径向渐变填充圆:

const blur1 = new createjs.Shape();
const endColor = this.hexToRGBA(data.settings.startColor,0);
blur1.circleCmd = blur1.graphics.beginRadialGradientFill([data.settings.startColor,endColor], [.25, .9], 0, 0, 0, 0, 0, 50).command;
blur1.graphics.drawCircle(0,0,50);
我正在使用命令功能,以便以后可以更新该填充

在一个请求动画帧中,我希望能够说将这个圆的填充更新为当前颜色-我正在使用的颜色值。因此,我:

thisBlur1.circleCmd.style.props.colors[0] = curColor;
thisBlur1.circleCmd.style.props.colors[1] = this.hexToRGBA(curColor,0);
我看到它正确地设置了圆的属性,但是它没有更新屏幕上的颜色,所以我猜style.props.colors数组是只读的?或者我需要在每一帧中完全重画圆?我想避免这种情况,因为有许多其他属性可以在这个圆的任何帧上更改


如何在easelJS中更新圆的渐变填充?

您的方法非常接近。由于画布如何创建渐变,因此不能直接修改渐变属性。相反,在fill命令上调用函数:

thisBlur1.circleCmd.radialGradient([...newColors], [.25, .9], 0, 0, 0, 0, 0, 5);

我最近回答了一个关于tweening渐变的问题,您可以在这里阅读:

您必须重新绘制它。EaselJS使用常规的画布绘制方法,这些方法也不提供更新功能。你所说的其他可以改变的属性是什么意思?