【发布时间】:2013-12-19 14:09:28
【问题描述】:
我现在进入 Kinetic,它让我在画布上绘画变得更加容易。但是,构建游戏应用程序时,我需要清除每个动画请求上的矩形。它们由 fps cap 脚本控制,但仍然每秒大约有 50 次更新。
Kinetic 的.removeChildren() 方法不仅会清除画布,还会从 DOM 中删除画布节点。这样做不仅会使 DOM 查询在 0.02 秒的间隔内不一致,而且与我运行游戏的每台机器上的普通 HTML5 画布处理相比,我的 FPS 速率也降低了约 60%。
有没有KineticJS 的方法可以以clearRect()'s 之类的方式清除画布?
编辑:
我还确保程序的任何其他部分都没有问题。调用堆栈不会溢出,FPS 下降只是由于 DOM 每 0.02 秒更改两次。
编辑 2:
我尝试了以下方法:
- 忽略之前的图层并创建一个空白矩形来填充画布的可见部分。它使我的帧速率下降到大约 14 FPS;
- 使用
.clear()方法。它解决了 DOM 一致性问题,但帧速率比以前更低。
似乎唯一的解决方案是调用默认的 HTML5 clearRect() 方法,但这意味着手动创建画布元素(并且可能会使 Kinetic 无法用作我的应用程序的库)。
编辑 3:
至于应用程序,我已经开始使用标准 HTML5 画布,因为我有一个截止日期。不过,我仍然希望看到 Kinetic 解决方案——它在未来可能会有所帮助。看到这么简单的事情在 KineticJS 这样的流行库中如此困难,甚至是不可能的,这让我感到惊讶。
【问题讨论】:
-
时间紧迫!您在 2 小时前问了您的问题,并且已经放弃了所有希望。关于 KineticJS 的提示:这个库正在迅速变化,并且经常发生重大变化——确保你查看了更改日志和文档;)
标签: javascript html canvas kineticjs