30秒到達戰(zhàn)場
2023-10-14 16:47:28
我正在嘗試制作一款游戲。我為角色可以移動的每個方向創(chuàng)建了一個函數,然后嘗試創(chuàng)建一個函數,通過調用其中的其他函數來使角色走完整條軌道。function fullMotion() { moveRight(365); moveUp(300); moveRight(570); moveDown(300); moveRight(365);}問題是,現在角色同時進行所有 5 個動作,我希望他首先向右走,然后在該動作完成后向上,依此類推,直到結束。我在谷歌上搜索了很多試圖找到一種方法,但我發(fā)現的所有解決方案對于這樣一個簡單的問題來說都顯得太復雜,大多數使用承諾或回調;我想可能有一個我找不到的超級簡單的解決方案。謝謝。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個贊
你需要知道動畫持續(xù)了多少時間,即一秒,所以:
function fullMotion() {
setTimeout(()=>moveRight(365),0);
setTimeout(()=>moveUp(300), 1000);
setTimeout(()=>moveRight(570), 2000)
setTimeout(()=>moveDown(300), 3000);
setTimeout(()=>moveRight(365),4000);
}

智慧大石
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 )
添加回答
舉報
0/150
提交
取消