为了账号安全,请及时绑定邮箱和手机立即绑定

如何确保我的函数一次只作用于一个元素?

如何确保我的函数一次只作用于一个元素?

慕无忌1623718 2023-05-25 17:06:10
有没有办法确保右腿不会在左腿每三秒抬起的同时抬起?function RstartWalking() {    setInterval(function() {        walk();    }, 1000);}function walk() {    Rlegy = Rlegy - 7;  Rinvy = Rinvy - 7;    setTimeout(function() {        if (Rlegy > Rlegy - 8) {            Rlegy = Rlegy + 7          Rinvy = Rinvy +7        }    }, 500);}RstartWalking();function LstartWalking() {    setInterval(function() {        Lwalk();    }, 1500);}function Lwalk() {    Llegy = Llegy - 7;  Linvy = Linvy - 7    setTimeout(function() {        if (Llegy > Llegy - 8) {            Llegy = Llegy + 7          Linvy = Linvy +7        }    }, 500);}LstartWalking();我正在寻找执行此操作的功能:当角色不动时,双腿都放下。当角色开始行走时,左腿向上,右腿向下,然后每半秒,向上的腿向下,向下的腿向上,然后当角色停止移动时,双腿再次向下。
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

我不确定您当前的代码对 7s 和 8s 做了什么,或者“向上”和“向下”意味着什么。但这将是一种在行走时管理腿部状态并控制停止和启动的方法。它从双脚开始,然后开始左腿向上行走,每半秒交替双腿,直到双腿向下停止。


let rightLegIsDown = true

let leftLegIsDown = true

let stepping

function step() {

  rightLegIsDown = !rightLegIsDown

  leftLegIsDown = !leftLegIsDown

  logLegsStatus('step')

}

function start() {

  leftLegIsDown = false

  logLegsStatus('start')

  stepping = setInterval(() => step(), 500)

}

function stop() {

  clearInterval(stepping)

  rightLegIsDown = true

  leftLegIsDown = true

  logLegsStatus('stop')

}

function logLegsStatus(state) {

  console.log(`L${leftLegIsDown ? '⬇︎' : '⬆︎'} R${rightLegIsDown ? '⬇︎' : '⬆︎'}. (${state})`)

}

logLegsStatus('initial')

document.getElementById('start').addEventListener('click', start)

document.getElementById('stop').addEventListener('click', stop)

<button type="button" id="start">Start Walking</button>

<button type="button" id="stop">Stop Walking</button>


查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信