Javascript:运行函数'select'& # 39;选项# 39;/如何停止setInterva
Javascript: Run function on 'select' 'option' / How to stop setInterval(...);?
我正在做一个爱好项目来帮助我提高我的javascript技能,所以请原谅我。简而言之:我想做的是为《super smash bros》的近战角色制作一个动作集节拍器。我有一些帧数据,当输入一个按钮,并将在各自的帧播放哔哔的mp3声音。所以我想要的是使用一个依赖的下拉菜单,我终于得到了工作后,一些谷歌/修补。其代码如下所示:
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<style>
#category2 option{
display:none;
}
#category2 option.label{
display:block;
}
</style>
<body>
<form id="formname" name="formname" method="post" action="submitform.asp" >
<select name="category1" id="category1">
<option value="">Select Category1</option>
<option value="fox">Fox</option>
<option value="mario">Mario</option>
</select>
<select disabled="disabled" id="category2" name="category2">
<option value>Select Category2</option>
<!-- FOX: -->
<option rel="fox">Select: </option>
<option rel="fox" value="wavedash">Wavedash</option>
<option rel="fox" value="waveshine">Waveshine</option>
<!-- MARIO -->
<option rel="mario">Select: </option>
<option rel="mario" value="wavedash">Wavedash</option>
</select>
</form>
</body>
<script>
$(function(){
var $cat = $("#category1"),
$subcat = $("#category2");
$cat.on("change",function(){
var _rel = $(this).val();
$subcat.find("option").attr("style","");
$subcat.val("");
if(!_rel) return $subcat.prop("disabled",true);
$subcat.find("[rel="+_rel+"]").show();
$subcat.prop("disabled",false);
});
});
</script>
</html>
然后,我有一段不同的代码,其中我使用setInterval编写了一个函数来实际显示所选角色的选定移动。例如,我在选项中选择了"Fox",然后我选择了Fox移动"Waveshine",我希望它运行如下代码:
var sound1 = new Audio('beep.mp3');
var sound2 = new Audio('beep2.mp3');
var sec = 0;
var frame = 0;
var slowDown = 5;
setInterval( function(){
frame = ++frame%60;
document.getElementById("frames").innerHTML="Framecount: "+String(pad(frame));
if(frame >= 0 && frame <= 4){
sound1.loop = false;
sound1.play();
document.getElementById("test").innerHTML=("⇑");
} else {
document.getElementById("test").innerHTML="";
}
if(frame >= 4 && frame <= 14){
if(frame == 4){
sound2.play();
}
document.getElementById("test").innerHTML=("R+⇘");
}
}, (1000/60)*slowDown);
function pad ( val ) {
return val > 9 ? val : "0" + val;
}
但是我不知道如何使它运行这段代码,一旦我选择了"福克斯"answers"Wavedash"的选项,我也不知道如何停止setInterval,如果我将切换到,例如,"马里奥"answers"Wavedash"。所以基本上,我要把这两段代码结合起来,在间隔上运行一个函数,当一个特定的角色和一个特定的移动被选中时。抱歉,如果这篇文章有点不清楚,请让我知道我是否应该扩展一些东西。谢谢阅读
首先,您需要将这段代码放入一个函数中:
function playSound() {
var sound1 = new Audio('beep.mp3');
var sound2 = new Audio('beep2.mp3');
var sec = 0;
var frame = 0;
var slowDown = 5;
setInterval( function(){
frame = ++frame%60;
document.getElementById("frames").innerHTML="Framecount: "+String(pad(frame));
if(frame >= 0 && frame <= 4){
sound1.loop = false;
sound1.play();
document.getElementById("test").innerHTML=("⇑");
} else {
document.getElementById("test").innerHTML="";
}
if(frame >= 4 && frame <= 14){
if(frame == 4){
sound2.play();
}
document.getElementById("test").innerHTML=("R+⇘");
}
}, (1000/60)*slowDown);
}
然后在您的$cat
和$subcat
onchange事件上,您可以调用playSound
方法。
$cat.on("change",function() {
// Your code
latestSoundInterval = playSound();
});
setInterval
返回一个整数,因此最好在更改类别/子类别时跟踪调用的所有setIntervals
。
var soundInterval = setInterval() { .... }
可以使用上述变量作为新的playSound
函数的返回类型。
然后停止间隔,你可以使用clearInterval
并将其传递回soundInterval
变量。
var latestSoundInterval = playSound();
clearInterval(latestSoundInterval); // Stop the set interval function
相关文章:
- 我的单元测试选项是什么
- 如何更改bigquery API中的计费层选项
- 使用Javascript获取所选选项ID
- Selectize.js:如何对整数值的选项进行排序
- 通过js在新选项卡中有条件地打开url
- 按照选项卡索引的顺序循环一个jQuery选择
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- 无法在Ionic select中预先选择最后一个选项
- 如何在选项卡上定义属性'的主窗口对象
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 使用此选项选择父类内部的类
- CKeditor:更改对话框中的默认选择选项
- JQuery覆盖不更改单选选项
- 活动选项卡's源代码-获取变量s值
- 绑定时将Parsley minlength消息作为选项传递时,未对其进行自定义
- 如何从选择框中的选项中获取属性值
- 如何在从多选下拉列表中选择选项值时动态生成文本框
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 如何从外部页面激活非默认引导选项卡
- Javascript:运行函数'select'& # 39;选项# 39;/如何停止setInterva