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

等待操作完成后再开始下一个操作

等待操作完成后再开始下一个操作

30秒到达战场 2023-10-14 16:47:28
我正在尝试制作一款游戏。我为角色可以移动的每个方向创建了一个函数,然后尝试创建一个函数,通过调用其中的其他函数来使角色走完整条轨道。function fullMotion() {  moveRight(365);  moveUp(300);  moveRight(570);  moveDown(300);  moveRight(365);}问题是,现在角色同时进行所有 5 个动作,我希望他首先向右走,然后在该动作完成后向上,依此类推,直到结束。我在谷歌上搜索了很多试图找到一种方法,但我发现的所有解决方案对于这样一个简单的问题来说都显得太复杂,大多数使用承诺或回调;我想可能有一个我找不到的超级简单的解决方案。谢谢。Movement functions are:function moveSkeleton0Right(){    let left = parseInt(window.getComputedStyle(skeleton0).getPropertyValue("left"));    left += 1;    skeleton0.style.left = left + "px";}function moveRight(i) {    if (i < 0) return;    setTimeout(function () {        moveSkeleton0Right();        moveRight(--i);    }, 16);}
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

你需要知道动画持续了多少时间,即一秒,所以:


function fullMotion() {

  setTimeout(()=>moveRight(365),0);

  setTimeout(()=>moveUp(300), 1000);

  setTimeout(()=>moveRight(570), 2000)

  setTimeout(()=>moveDown(300), 3000);

  setTimeout(()=>moveRight(365),4000);

}


查看完整回答
反对 回复 2023-10-14
?
智慧大石

TA贡献1946条经验 获得超3个赞

async function fullMotion() {

  await moveRight(365);

  await moveUp(300);

  await moveRight(570);

  await moveDown(300);

  await moveRight(365);

}

一种是此处实现异步函数的一种方法(请参阅:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function )


查看完整回答
反对 回复 2023-10-14
  • 2 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

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