Javascript 如何在HTML画布中添加淡出效果

Javascript 如何在HTML画布中添加淡出效果,javascript,html,canvas,html5-canvas,Javascript,Html,Canvas,Html5 Canvas,我正在尝试向HTML画布中的拱门添加淡出效果(在绘制半秒钟后发生) 我能画一个圆 这是我画拱门的代码 ctx.beginPath(); ctx.fillStyle = "#000000"; ctx.arc(Xcoord, Ycoord, 50, 0, 2 * Math.PI, false); ctx.fill(); ctx.lineWidth = "4"; ctx.strokeStyle = "#000000"; ctx.stroke();

我正在尝试向HTML画布中的拱门添加淡出效果(在绘制半秒钟后发生)

我能画一个圆

这是我画拱门的代码

 ctx.beginPath();
    ctx.fillStyle = "#000000";
    ctx.arc(Xcoord, Ycoord, 50, 0, 2 * Math.PI, false);
    ctx.fill();
    ctx.lineWidth = "4";
    ctx.strokeStyle = "#000000";
    ctx.stroke();
    ctx.closePath();

有没有一种方法可以扩展它以添加一个淡出效果,该效果在绘制后0.5秒开始。

我的解决方案基于纯JavaScript

  • 定一个间隔
  • 如果没有,则设置不透明度
  • 减少不透明度直到0
  • 不透明度达到0后的清除间隔
  • var canvas=document.getElementById(“myCanvas”);
    var ctx=canvas.getContext(“2d”);
    ctx.fillStyle=“#FF0000”;
    ctx.fillRect(0,020100);
    setTimeout(函数(){
    var fadeTarget=document.getElementById(“myCanvas”);
    var fadeEffect=setInterval(函数(){
    如果(!fadeTarget.style.opacity){
    fadeTarget.style.opacity=1;
    }
    如果(fadeTarget.style.opacity>0){
    fadeTarget.style.opacity-=0.02;
    }否则{
    清除间隔(fadeEffect);
    }
    }, 20);
    },0.5);
    
    
    您的浏览器不支持画布元素。
    
    我的解决方案基于纯JavaScript

  • 定一个间隔
  • 如果没有,则设置不透明度
  • 减少不透明度直到0
  • 不透明度达到0后的清除间隔
  • var canvas=document.getElementById(“myCanvas”);
    var ctx=canvas.getContext(“2d”);
    ctx.fillStyle=“#FF0000”;
    ctx.fillRect(0,020100);
    setTimeout(函数(){
    var fadeTarget=document.getElementById(“myCanvas”);
    var fadeEffect=setInterval(函数(){
    如果(!fadeTarget.style.opacity){
    fadeTarget.style.opacity=1;
    }
    如果(fadeTarget.style.opacity>0){
    fadeTarget.style.opacity-=0.02;
    }否则{
    清除间隔(fadeEffect);
    }
    }, 20);
    },0.5);
    
    
    您的浏览器不支持画布元素。
    
    将鼠标悬停到SVG文件:

    正文{
    文本对齐:居中;
    }
    #甜甜圈糖衣{
    填充:#FA9CB6;
    过渡:填写;
    }
    #甜甜圈:悬停{
    光标:指针;
    }
    #甜甜圈:悬停#甜甜圈糖衣{
    填充:#4a8af4;
    }
    
    使用CSS/Sass在悬停时设置SVG圆环动画
    
    将鼠标悬停到SVG文件:

    正文{
    文本对齐:居中;
    }
    #甜甜圈糖衣{
    填充:#FA9CB6;
    过渡:填写;
    }
    #甜甜圈:悬停{
    光标:指针;
    }
    #甜甜圈:悬停#甜甜圈糖衣{
    填充:#4a8af4;
    }
    
    使用CSS/Sass在悬停时设置SVG圆环动画
    
    MDN是一个很好的画布2d资源

    这是我最近就同一主题回答的第二个问题。画布上的以下内容将解释如何渲染动画(褪色)内容

    时机 下面的示例使用传递给
    mainLoop
    函数的
    time
    创建各种与时间相关的动画效果。时间存储在
    globalTime
    中,并根据需要使用

    动画计时在底部函数
    drawContent
    中,并使用变量
    animateStart
    (开始前的多长时间)和
    animateLen
    (动画的多长时间)

    然后,从0到1的值(在
    animPos
    中)被传递到函数
    donut.draw
    并用于设置动画
    donut.draw
    还使用
    globalTime
    更改结冰颜色

    var globalTime;//设置在主循环中
    var startTime;//未定义意味着它被重置
    var animateStart=2500;//以毫秒为单位,直到动画开始2.5秒
    var animateLen=10000;//以毫秒为单位,动画长度为10秒
    函数drawContent(){
    var animPos=0;//默认动画位置
    //检查动画是否需要重置。如果需要,请设置开始时间
    如果(startTime===未定义){startTime=globalTime+animateStart}
    //使用全局时间和开始时间之间的dif来获取动画位置
    常数t=全局时间-开始时间;
    如果(t>=0&&t1?1-(animPos-1):animPos;
    }如果(t>=animateLen){startTime=undefined}//重置动画,则为else
    油炸圈饼.draw(Math.easeInOut(animPos));
    
    }
    MDN是一个很好的画布2d资源

    这是我最近就同一主题回答的第二个问题。画布上的以下内容将解释如何渲染动画(褪色)内容

    时机 下面的示例使用传递给
    mainLoop
    函数的
    time
    创建各种与时间相关的动画效果。时间存储在
    globalTime
    中,并根据需要使用

    动画计时在底部函数
    drawContent
    中,并使用变量
    animateStart
    (开始前的多长时间)和
    animateLen
    (动画的多长时间)

    然后,从0到1的值(在
    animPos
    中)被传递到函数
    donut.draw
    并用于设置动画
    donut.draw
    还使用
    globalTime
    更改结冰颜色

    var globalTime;//设置在主循环中
    var startTime;//未定义意味着它被重置
    var animateStart=2500;//以毫秒为单位,直到动画开始2.5秒
    阿尼泰尔酒店