Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 填充样式颜色的转换_Jquery_Html_Canvas - Fatal编程技术网

Jquery 填充样式颜色的转换

Jquery 填充样式颜色的转换,jquery,html,canvas,Jquery,Html,Canvas,我有一个可视化工具设置,它每7.5秒改变一次颜色,问题是,它会立即改变颜色,你能在fillStyle上使用.animate()吗?如果没有,是否有办法将过渡添加到fillStyle?fillStyle没有自动设置其过渡动画的方法。 但是,创建动画循环以设置过渡动画相当容易 您要做的是在2.50秒的动画循环中,每帧绘制两次疯狂内容: 以不透明度在2.50秒内降低的起始颜色绘制 使用不透明度在2.50秒内增加的结束颜色绘制 这里是带注释的示例代码和演示: //画布相关变量 var canvas

我有一个可视化工具设置,它每7.5秒改变一次颜色,问题是,它会立即改变颜色,你能在fillStyle上使用.animate()吗?如果没有,是否有办法将过渡添加到fillStyle?

fillStyle
没有自动设置其过渡动画的方法。

但是,创建动画循环以设置过渡动画相当容易

您要做的是在2.50秒的动画循环中,每帧绘制两次疯狂内容:

  • 以不透明度在2.50秒内降低的起始颜色绘制

  • 使用不透明度在2.50秒内增加的结束颜色绘制

这里是带注释的示例代码和演示:

//画布相关变量
var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var cw=画布宽度;
var ch=画布高度;
风险值持续时间=2.50;
//起始和结束颜色
var rgbStart='#BC49FF';
var rgbEnd='#574FFF';
//计算requestAnimationFrame可以使用的帧数
//在比赛期间抽签
var opacitySteps=parseInt(60*持续时间);
//将当前不透明度步长设置为其起始编号(0)
var opacityStep=0;
//启动2.5秒的动画
请求动画帧(动画);
函数动画(时间){
//以百分比形式计算当前不透明度
//opacityStep/opacityStep的定义
var不透明度=100*(不透明度/不透明度);
如果(opacityStep>=opacityStep-1){opacity=100;}
//清理画布
ctx.clearRect(0,0,cw,ch);
//使用减少不透明度的起始颜色绘制
ctx.globalAlpha=(100不透明度)/100;
ctx.fillStyle=rgbStart;
ctx.fillRect(20,20100,75);
ctx.strokeRect(20,20100,75);
//使用增加的不透明度绘制结束颜色
ctx.globalAlpha=(不透明度)/100;
ctx.fillStyle=rgbEnd;
ctx.fillRect(20,20100,75);
ctx.strokeRect(20,20100,75);
//清理,将globalAlpha重置为默认值1.00
ctx.globalAlpha=1.00;
//如果已播放所有步骤,则返回
如果(++opacityStep>=opacityStep){return;}
//否则请求另一帧
请求动画帧(动画);
}
$('#再次')。单击(函数(){
opacityStep=0;
请求动画帧(动画);
})
body{背景色:象牙;}
#画布{边框:1px纯红;}

在2.50秒内转换填充样式

再次

fillStyle
没有自动设置其转换动画的方法。

但是,创建动画循环以设置过渡动画相当容易

您要做的是在2.50秒的动画循环中,每帧绘制两次疯狂内容:

  • 以不透明度在2.50秒内降低的起始颜色绘制

  • 使用不透明度在2.50秒内增加的结束颜色绘制

这里是带注释的示例代码和演示:

//画布相关变量
var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var cw=画布宽度;
var ch=画布高度;
风险值持续时间=2.50;
//起始和结束颜色
var rgbStart='#BC49FF';
var rgbEnd='#574FFF';
//计算requestAnimationFrame可以使用的帧数
//在比赛期间抽签
var opacitySteps=parseInt(60*持续时间);
//将当前不透明度步长设置为其起始编号(0)
var opacityStep=0;
//启动2.5秒的动画
请求动画帧(动画);
函数动画(时间){
//以百分比形式计算当前不透明度
//opacityStep/opacityStep的定义
var不透明度=100*(不透明度/不透明度);
如果(opacityStep>=opacityStep-1){opacity=100;}
//清理画布
ctx.clearRect(0,0,cw,ch);
//使用减少不透明度的起始颜色绘制
ctx.globalAlpha=(100不透明度)/100;
ctx.fillStyle=rgbStart;
ctx.fillRect(20,20100,75);
ctx.strokeRect(20,20100,75);
//使用增加的不透明度绘制结束颜色
ctx.globalAlpha=(不透明度)/100;
ctx.fillStyle=rgbEnd;
ctx.fillRect(20,20100,75);
ctx.strokeRect(20,20100,75);
//清理,将globalAlpha重置为默认值1.00
ctx.globalAlpha=1.00;
//如果已播放所有步骤,则返回
如果(++opacityStep>=opacityStep){return;}
//否则请求另一帧
请求动画帧(动画);
}
$('#再次')。单击(函数(){
opacityStep=0;
请求动画帧(动画);
})
body{背景色:象牙;}
#画布{边框:1px纯红;}

在2.50秒内转换填充样式

再次

try transition duration--我需要为画布的fillStyle属性进行转换,而不是divtry transition duration--我需要为画布的fillStyle属性进行转换,而不是division--有没有办法在没有requestAnimationFrame的情况下进行转换?因为我以前有过它,而且它刚刚断开,所以可以使用
setInterval
以2.50秒的间隔调用动画帧。2.50秒过后,您可以调用
clearInterval
停止动画循环。话虽如此,使用
requestAnimationFrame
是最好的编程实践(出于性能和其他原因),如果您将其添加到工具包中,它将有助于您的编程;-)祝你的项目好运!我已经在我的网站上使用过3次了,但是颜色变化非常快,我理解…
requestAnimationFrame
可能很难学习,但是一旦你在学习过程中提高了,它会有显著的好处;-)。请记住,
requestAnimationFrame
将以大约每秒60帧的速度自动触发,但它还提供了一个当前时间参数,允许您在指定的运行时间绘制动画,如果未达到运行时间,则只需移动到下一帧。这是一篇不错但不是很好的帖子