我第一次尝试使用kaboom.js创建一些移动的矩形,但过了一段时间浏览器会说javascript正在减慢一切并阻止它。我猜这是因为当一个对象存在于屏幕上时,它不会被删除,但我在另一个kaboom脚本中看不到这一点
代码
import kaboom from "https://unpkg.com/kaboom@next/dist/kaboom.mjs";
let w, h, direction;
let speed = 20;
let spawnSpeed = 3;
let mode = 'x';
kaboom();
function addRect() {
switch (mode) {
case 'x':
w = 40;
h = rand(15, 25);
mode = 'y';
direction = RIGHT;
break
case 'y':
w = rand(15, 25);
h = 40;
mode = 'x';
direction = DOWN;
break;
}
add([
rect(w, h),
area(),
outline(4),
pos(
rand(0, width()-width()/2),
rand(0, height()-height()/2)
),
origin("botleft"),
color(rand(0,255), rand(0,255), rand(0,255)),
move(direction, speed),
]);
wait(spawnSpeed, addRect);
speed += 10;
if (spawnSpeed >= 1) {
spawnSpeed -= 0.3;
};
speed += 0.3;
}
addRect();发布于 2021-09-14 10:25:57
当您看到整个系统变慢时,这意味着肯定存在内存泄漏或调用自身的递归函数(至少在javascript中)。所有东西冻结之前所需的时间取决于可用的RAM大小。
正如你可以从截图中看到的,kaboom已经消耗了6 6GB的内存(这会导致整个系统的速度变慢),这是因为你从来不会删除你添加的矩形,而且,从你在代码(spawnSpeed)中编写的代码中,你也会越来越快地做到这一点。
另请参阅文档,避免复制和粘贴其他脚本:https://kaboomjs.com/doc#destroy

https://stackoverflow.com/questions/69166386
复制相似问题