javascript - 为什么在javascript Canvas 动画上创建几个对象后,它们是连接在一起的?

标签 javascript html canvas

我的 javascript Canvas 有问题。 我试图在 Canvas 上放置几个在 Canvas 边缘移动和弹跳的对象。如果我创建一个对象,它没有问题,但如果我想创建更多对象,它们就会连接起来。

Fiddle example:

https://jsfiddle.net/mwbgwa39/

如果有人能帮助我,我将非常感激:)

最佳答案

重要的是在每个对象绘制开始时调用 beginPath() ,并在完成绘制该对象时调用 closePath() 。如果您不调用它, Canvas 会认为您正在尝试继续绘制最后一个对象。您可以阅读更多内容MDN

        for(i in obj_t)
            {
                ctx.beginPath();
                obj_t[i].xPos = obj_t[i].xPos + obj_t[i].xVel;
                obj_t[i].yPos = obj_t[i].yPos + obj_t[i].yVel;
                ctx.arc(obj_t[i].xPos, obj_t[i].yPos, obj_t[i].r, 0, 2 * Math.PI);


                ctx.stroke();
                ctx.fill();
                ctx.closePath(); // optional
            }

编辑:正如 Kaiido 注意到的那样,在此示例中调用 closePath() 是不必要的。有关何时应调用 closePath() 的更多信息 can be found in this SO question .

关于javascript - 为什么在javascript Canvas 动画上创建几个对象后,它们是连接在一起的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35113498/

相关文章:

php - 数据库更改自动通知 :similar with facebook friend request

javascript - 在具有预定义的父宽度和水平滚动的同一行上动态生成的 div

javascript - 具有可编辑输入的 HTML5 输入颜色

android - android webview 浏览器是否支持 html5 功能?

javascript - 日期对象和 UTC 方法

javascript - PHP Jquery 选项卡 : content loads into one tab's panel

javascript - Cortex 无法提供包装数组的所有方法

javascript - Web Worker 的无文档 Canvas

javascript - Html 5 Canvas 车速度

c# - Canvas 上的 MouseLeftButtonDown 需要太高的精度