Javascript和Canvas:绘制和删除线条以创建一个“呼吸”的圆圈
Javascript & Canvas: Draw and delete lines to create a "breathing" circle
我想创建一个元素,显示一个红色圆圈。一旦用户点击它,她就可以录制她的声音。为了显示LIVE模式,我想根据输入频率使圆圈"呼吸"。
我正在试验一个<canvas>
元素。这意味着它会创建一个越来越大的圆,具体取决于变量arcrad
。但是,线条绘制正确,但之后不会消失。我试图应用.clip()
但无法让它工作......
if (arcrad <= 10) arcrad = 10;
analyserContext.beginPath();
analyserContext.arc(100,120,arcrad,0,2*Math.PI);
analyserContext.closePath();
analyserContext.lineWidth = 2;
analyserContext.strokeStyle = 'red';
analyserContext.stroke();
有什么想法 - 或者这个用例的完全不同的策略?
默认情况下,画布将过度绘制。对于动画,您需要在每一帧的开头清理画布。在绘图函数开始时使用以下内容:
analyserContext.clearRect(0,0,200,200);
假设您的画布宽且高 200 像素。值得指出的是,有时您不想每一帧都完全清除动画字段。例如,如果你要在开始时在框架上绘制一个半透明的矩形(而不是清除它),那么你最终会得到一个基本的"项目符号时间"样式效果。
这是
正常行为。一旦它在画布上绘制了一些东西,它就会永远存在。你必须像画什么东西一样思考:已经完成的事情无法撤消。幸运的是,您仍然有解决方案:
1)在第一个带有背景色的圆的顶部重新绘制另一个圆圈。这真的不是推荐的方式,但它仍然有用
2) 使用clearRect
方法(请参阅如何清除画布以进行重绘)
有许多方法可以清除画布预绘图以创建动画:如何清除画布以进行重绘
我脑海中最简单的:
canvas.width=canvas.width;
虽然同样可以在区域或整个画布上使用 clearRect(它实际上更快,如果这是关于转换等问题,则不会重置整个画布!
获得以下信息:
http://jsfiddle.net/dw17jxee/
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- Regex代码只允许一个空格
- Javascript和Canvas:绘制和删除线条以创建一个“呼吸”的圆圈