【发布时间】:2014-08-22 14:36:28
【问题描述】:
我想将步行呈现为带有单选按钮的复选框。每 2 秒,角色开始移动的概率为 30%,停止的概率为 30%。 如果选中该复选框,则表示角色正在移动。 第二个和第三个单选按钮表示角色前面的左腿或右腿。我知道在代码中添加多个 setTimeout 会犯很大的错误。
所以我想做的是:如果复选框被选中,单选按钮(2nd,3rd)应该交替改变它的值。如果未选中,则选中第一个单选按钮。
在移动吗? [] 腿:(*)| () ()
在移动吗? [✓] 腿:() | ( *) ()
在移动吗? [✓] 腿:() | () (*)
在移动吗? [✓] 腿:() | ( *) () ....
var move = document.getElementById('movement');
var leg = document.getElementsByName('legs');
var m;
function moving() {
m = Math.random() * 10;
if (m < 3) {
move.checked = true;
} else if (m < 6) {
move.checked = false;
leg[0].checked = true;
}
if (move.checked == true) {
leg[1].checked = true;
setTimeout(leg[2].checked = true, 500);
setTimeout(leg[1].checked = true, 1000);
setTimeout(leg[2].checked = true, 1500);
}
}
setInterval(moving, 2000);
【问题讨论】:
-
所以如果选中移动,那么你希望每 0.5 秒换一次腿?在我看来,您只需要摆脱 setTimeouts 并切换腿的检查状态。如果未选中移动,您还需要取消间隔,以便每 2 秒(可能)修改其值时,您可以开始和停止“行走”。
标签: javascript animation checkbox radio-button setinterval