JavaScript-动画形状在HTML5<画布>
JavaScript - Animated shapes behave strange in HTML5 <canvas>
我有一个小型大学项目。我正在使用<canvas>
元素制作圆形动画。它们从底部边界出现并平滑地向上移动。圆的X坐标、半径和颜色是随机选择的。
问题是,当我的圆圈到达<canvas>
的上边界时,它们开始闪烁,有时还会改变颜色。这是JSFIDDLE。我做错了什么?谢谢
for...in
非常适合在对象上迭代,但它不是为在数组上迭代而设计的。从本质上讲,你的i
有点跳跃。不要使用for...in
,而是使用这个(非常有效的)循环:
for(var i = circles.length; i--;) {
这解决了问题!
有时闪烁是因为在其他圆圈的顶部有圆圈。然而,更多的时候,这是因为你在循环浏览列表时更改了列表
如果你跟踪要删除的圆圈,然后在绘制圆圈后将其删除,效果会更好:
function animateCircles() {
if(frameCounter % 4 === 0) addCircle();
var remove = [];
for(var i = 0; i < circles.length; ++i) { // DON'T USE for ... in on an array!
circles[i]['y'] -= 2;
drawCircle(circles[i]['x'], circles[i]['y'], circles[i]['r'], circles[i]['c']);
if(circles[i]['y'] < -circles[i]['r']) remove.push(i);
}
for (i = remove.length; --i >= 0; )
circles.splice(remove[i], 1);
}
分叉的小提琴。
相关文章:
- 在<页眉>标签
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 如何更改<svg>标记为<img>用js标记
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 画布数据到图像
- 做<img>或者<画布>保存对原始(大)dataUrl对象的引用
- 如何在使用<画布>标签
- JavaScript-动画形状在HTML5<画布>
- 我的<画布>加载特定PDE文件时调整大小
- 如何发送HTML<画布>数据到服务器
- 有没有一种方法可以覆盖<画布>通过全屏HTML5<视频>
- 从html5<创建视频流;画布>
- <画布>:从内存中删除2d上下文,而不从内存中移除webgl上下文
- 如何绘制现有<img>到画布
- 如何约束<画布>
- 如何调整html<画布>动态使用Javascript
- 使用<画布>对于大型'地图'
- 我应该如何使用`<画布>`
- 使用<画布>和javascript
- JavaScript<画布>绘制缩放图像