Вы можете использовать генераторную функцию , чтобы заранее определить анимацию - простите плохой код, это просто чтобы дать вам идею:
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
// here we create a generator function,
// where we define each step:
function* rect(ctx, x, y, x2, y2) {
// top line
for (let k = x; k <= x2; k++) {
ctx.lineTo(k, y);
yield;
}
// right line
for (let j = y; j <= y2; j++) {
ctx.lineTo(x2, j);
yield;
}
// bottom line
for (let k = x2; k >= x; k--) {
ctx.lineTo(k, y2);
yield;
}
// left line
for (let j = y2; j >= y; j--) {
ctx.lineTo(x, j);
yield;
}
}
const steps = rect(ctx, 10, 10, 80, 90);
ctx.strokeStyle = "black"
function draw () {
if (!steps.next().done){
ctx.stroke();
} else {
// here the animation is done
ctx.fill();
}
// 60 fps
requestAnimationFrame(draw);
}
draw();
Заключение в кавычки страницы справочника:
В интерактивном режиме... Если строка запускается с '=', то lua отображает значения всех выражений в остатке от строки. Выражения должны быть разделены запятыми.
Я думаю, что это должно быть функцией одинокого интерпретатора. Я не могу сделать ту работу ни над чем, во что я скомпилировал lua.
Присвоение не является выражением, которое возвращает что-то в Lua
как он находится в C
.
Я не назвал бы это функцией - интерпретатор просто возвращает результат оператора. Это - его задание, не так ли?