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

有没有办法确保右腿不会在左腿每三秒抬起的同时抬起?


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();

我正在寻找执行此操作的功能:当角色不动时,双腿都放下。当角色开始行走时,左腿向上,右腿向下,然后每半秒,向上的腿向下,向下的腿向上,然后当角色停止移动时,双腿再次向下。


慕无忌1623718
浏览 96回答 1
1回答

繁花不似锦

我不确定您当前的代码对 7s 和 8s 做了什么,或者“向上”和“向下”意味着什么。但这将是一种在行走时管理腿部状态并控制停止和启动的方法。它从双脚开始,然后开始左腿向上行走,每半秒交替双腿,直到双腿向下停止。let rightLegIsDown = truelet leftLegIsDown = truelet steppingfunction step() {&nbsp; rightLegIsDown = !rightLegIsDown&nbsp; leftLegIsDown = !leftLegIsDown&nbsp; logLegsStatus('step')}function start() {&nbsp; leftLegIsDown = false&nbsp; logLegsStatus('start')&nbsp; stepping = setInterval(() => step(), 500)}function stop() {&nbsp; clearInterval(stepping)&nbsp; rightLegIsDown = true&nbsp; leftLegIsDown = true&nbsp; logLegsStatus('stop')}function logLegsStatus(state) {&nbsp; 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>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript