叶Yeh 2021-07-12 00:22 采纳率: 100%
浏览 29
已采纳

每点击一次按钮,在画布的随机地方出现一个圆向右下移动。

下面贴了body的代码,要用列表,怎么出现多个圆?求解

    <canvas width="640" height="480"></canvas>
    <br><button id="btn"></button>
     <script>
        let circles=[];
        let id=null;
        let x=parseInt(Math.random()*640);
        let y=parseInt(Math.random()*480);
        let c={x,y,r:40};
        const cv=document.querySelector("canvas");
        const gc=cv.getContext("2d");
        const btn=document.querySelector("#btn");
        btn.addEventListener('click',()=>{
            for(let i=0;i<circles.length;i++){
            if(id==null){
                id=setInterval(draw,7);
                }
            circles.push[i];
            }
            
        })
        function draw(){
            c.x +=1;
            c.y +=1;
            gc.clearRect(0,0,cv.width,cv.height);
            gc.beginPath();
            gc.lineWidth=5;
            gc.strokeStyle="blue";
            gc.arc(c.x,c.y,c.r,0,2*Math.PI);
            gc.stroke();
    }
    </script>
  • 写回答

1条回答 默认 最新

  • 关注
        <canvas width="640" height="480"></canvas>
        <br><button id="btn">按钮</button>
         <script>
            let circles=[];
            let id=null;
            const cv=document.querySelector("canvas");
            const gc=cv.getContext("2d");
            const btn=document.querySelector("#btn");
            btn.addEventListener('click',()=>{
                if(id==null){
                    id=setInterval(draw,7);
                }
                let x=parseInt(Math.random()*640);
                let y=parseInt(Math.random()*480);
                let c={x,y,r:40};
                circles.push(c);
            });
            function draw(){
                gc.clearRect(0,0,cv.width,cv.height);
                circles.forEach(function(c){
                    c.x +=1;
                    c.y +=1;
                    gc.beginPath();
                    gc.lineWidth=5;
                    gc.strokeStyle="blue";
                    gc.arc(c.x,c.y,c.r,0,2*Math.PI);
                    gc.stroke();
                });
        }
        </script>
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月12日
  • 创建了问题 7月12日

悬赏问题

  • ¥15 用三极管设计—个共射极放大电路
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示