Javascript节拍器:HTML5动画内部创建奇怪的回声
Javascript metronome: HTML5 inside animation creating strange echo
我正在制作一个简单的拉斐尔驱动的Javascript节拍器。我的问题是点击的声音,奇怪的是,在点击了大约12次之后,它开始发出两次声音。我目前使用的标签,但我有同样的问题,当使用SoundManager2。
我把它们都放在这里,这里是重要的部分:
<audio id="tick" src="http://experimentsinform.com/media/audio/tick.wav"></audio>
<script>
var paper = Raphael("canvas", 300, 300);
function tick() {
document.getElementById("tick").play();
}
var metronome = function(x, y, l) {
//draw metronome. See fiddle
var mn = paper.set(stick, vertex, weight).attr("transform", "R-20 " + x + "," + y);
Raphael.easing_formulas.sinoid = function(n) { return Math.sin(Math.PI * n / 2) };
return {
start: function(tempo, sound) {
var interval = 120000 / tempo;
var ticktock = Raphael.animation({
"50%": { transform:"R20 " + x + "," + y, easing: "sinoid", callback: function() { sound(); }},
"100%": { transform:"R-20 " + x + "," + y, easing: "sinoid", callback: function() { sound(); }}
}, interval);
mn.animate(ticktock.repeat(Infinity));
},
stop: function() {
mn.stop();
mn.attr("transform", "R-20 " + x + "," + y);
}
};
};
var m = metronome(150, 275, 250);
m.start(120, tick);
</script>
如果你让它在Chrome中勾选大约20次,你就会开始听到双击的声音。有人知道为什么吗?我把mp3的音效保持在30毫秒左右。
谢谢!
啊,Raphael将动画应用于集合中的三个元素,所以回调被调用了三次。感谢@UpTheCreek和@StarBeamRainboxLabs
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 为effect Composer创建GodRays效果过程
- 从javascript创建一个列表
- onkeyup无法动态创建多个文本区域
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何访问声音管理器2创建的声音对象
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 使用Facebook live API创建实时视频对象时的隐私设置
- 在动态创建的元素上获取对特定选择器的引用
- 如何创建带有插槽的vue js组件预加载程序
- 如何在创建键时引用来自同一对象的键
- 如何创建JSON数组
- 从html创建一个指令,该指令按类名应用函数
- 使用Javascript创建测验页面
- 更改使用Chart.js创建的图表中的轴线颜色
- JavaScript名称空间和对象创建
- JQuery对动态创建的对象进行选择
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- Javascript节拍器:HTML5动画内部创建奇怪的回声