求助,关于 JS/HTML 的 canvas
  • 板块学术版
  • 楼主Twlight!
  • 当前回复18
  • 已保存回复18
  • 发布时间2024/10/19 14:37
  • 上次更新2024/10/19 16:23:34
查看原帖
求助,关于 JS/HTML 的 canvas
362776
Twlight!楼主2024/10/19 14:37

rt,在某些个人项目中我使用了多个不同zIndex的canvas去绘制一些对象(子弹),类似如下代码(画布已经封装了某种类)

// 创建代码
for (let O in self["CanvasList"]) self["CanvasList"][O]["__Delete__"]();
for (let R = 0; R <= oS["R"] + 1; ++R) {
	self["CanvasList"][R] = new oEffect({ Dev_Style: { width: 1500, height: 800, zIndex: R * 3 + 2, top: "-100px", left: "-100px" }, Width: 1500, Height: 800 }, EDPZ);
	self["CanvasList"][R + "_Shadow"] = new oEffect({ Dev_Style: { width: 1500, height: 800, zIndex: R * 3, top: "-100px", left: "-100px" }, Width: 1500, Height: 800 }, EDPZ);
}
                       
// 游戏帧调用代码
for (let Q in CanvasList) CanvasList[Q]["Clear_Canvas"]();
// ...以及其它绘制操作

其实本来每个子弹都是独立的dom节点的,但是根据实际应用来看这样远比canvas绘制卡顿的多,因此我在去年九月份就尝试把这些东西搞到canvas里,但是因为部分原因我不得不创建超过十个透明canvas。

这样在频繁调用 TraversalOf() 函数的时候,即使画布上没有任何物体,不断地清空画布也会导致部分浏览器严重卡顿掉帧。

这似乎跟浏览器型号有关系,又似乎跟电脑配置有关联,比如在chrome上运行卡顿在edge上运行流畅,又或者是在三个浏览器上都卡顿。

我查过相关资料,但是都没有很好的解释这一现象的原因,我也不懂canvas相对应的底层代码是如何实现的。

有没有懂哥知道为什么会造成这种卡顿差异,或者有其它的解决办法吗,万分感谢orz

2024/10/19 14:37
加载中...