html - Canvas (Kinetic.JS): multiple layers vs single layer approach

标签 html canvas layer shapes kineticjs

谁能解释为什么(事实上,如果)在使用像 Kinetic 这样的东西时最好将 Canvas 游戏的主要部分抽象到不同的层?

当然感觉你应该,到目前为止我一直是:一层用于背景,一层用于玩家角色,等等。

然后我遇到了这样一种情况,我需要一层的形状位于另一层的形状后面 - 但是将整个层移动到另一层后面不是一个选项,所以我不情愿地重新编码所以整个游戏位于一层。

不过,令我惊讶的是,我仍然可以做我需要做的一切。我仍然可以为单个形状或组设置动画或处理事件。

简而言之:显式分层带来什么优势?单层方法可能会遇到哪些陷阱?

最佳答案

实际上,层通常会带来巨大的优势。但是,有时它们不是必需的。只是给出一个想法 - 比较 PhotoShop(图层)和 MS Paint(无图层)。如果这给了你想法,那就是它!

如果不是:层是一个组织概念。它使您可以分段处理数据。他们允许:

  1. 对整个层应用某些转换。
  2. 自动按层对对象进行分类,这样您就可以 一个层的所有对象并很容易地使用它们。
  3. 将一个层中发生的任何事情与其他层中发生的事情隔离开来。
  4. 禁用/启用整个图层。
  5. 还有很多!

如您所见,层通常允许在内容组织级别上实现诸如封装 和某种程度上的多态性 之类的抽象。单层方法带来的陷阱就是 - 太紧的耦合 - 一个来自永久混沌世界的野兽,封装多态为之奋斗永恒。纳夫说!

关于html - Canvas (Kinetic.JS): multiple layers vs single layer approach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12166848/

相关文章:

html - 列表项和嵌套子菜单列表之间的间隙导致悬停状态丢失

html - 为什么我的位置绝对不起作用?

javascript - KineticJS 图像不能在本地工作,有时在线工作

java - 类似 Photoshop 的脚本框架

swift - 使用图层向 UIView 添加阴影

javascript - 获取文本区域中的行号

javascript - 我如何通过键盘输入更改 Sprite ,我正在使用 vanilla JS

javascript - 计算 Canvas 中彩色方 block 的数量

Android:是否可以有多个单独的 Canvas 层,我可以将它们合并为一个?

html - 内容为动态时,字段集高度为表格单元格的 100%