使用多层 - KineticJS

2024-04-02

我正在使用 KineticJS 4.0.5,目前正在尝试绘制几个图层的内容,但只绘制了添加到舞台的最后一个图层...如果我正确理解了文档,这应该是可能的,否则我们为什么需要一层?

我有三个不同的层:

  • 仅包含 Kinetic.Rect 对象的背景层;
  • 具有多种形状的元素层;
  • 顶层包含我希望始终位于所有内容之上的元素。

我将这些图层填充到我创建的对象内的绘制函数中,该对象还有一个引用背景的 shape 属性和一个包含要添加到元素图层的元素的内容属性。我的绘制函数的代码如下:

this.draw = function() {
    var stage = E.game.stage, layers = E.game.layers;

    stage.clear();

    // Add Background
    this.shape.setSize(stage.getWidth(), stage.getHeight());
    layers.background.add(this.shape);

    // Iterate over contents
    for(var i = 0; i < this.contents.length; i++) {
        layers.elements.add(this.contents[i].shape);
    }

    // Draw Everything
    stage.add(layers.background);
    stage.add(layers.elements);
    stage.add(layers.top); // This one is currently empty
    stage.draw();
}

运行此函数后,画布中仅绘制layers.top,如果我注释添加它的行,则仅绘制layers.elements。然而,舞台有 3 个子级(我用 Chrome 上的检查元素检查了它),并且在文档中它说绘图函数绘制了所有图层......我在这里做错了什么吗?或者说这是不可能的?如果不可能,为什么我需要一个图层和一个舞台?一个还不够吗?

先感谢您。

Edit:我能够解决这个问题,我将带有 css 的白色背景颜色应用于画布元素,并且由于每个层都在其他层之上创建一个新的画布元素,所以我只能看到最顶层的内容(在这种情况下只是白色的)。

但是,我仍然遇到与多层相关的问题,这是我以前只使用一层时没有遇到的问题。当我在舞台上使用清除功能时,它应该清除图层,对吧?但相反,图层保持完全相同,即使我尝试在每个单独的图层上调用清除,它们也不会改变...我还在清除它们后使用舞台绘制函数,但仍然没有任何变化...到目前为止我找到的唯一解决方案是从舞台上删除图层并再次添加它:s 有没有更好的方法来重置图层内容?

再次感谢您,并对第一个问题造成的困惑表示歉意。


清除只是为了在重新绘制画布之前清除画布。它不会删除添加到图层中的对象。因此,对于您的情况,请使用删除功能取出附加到图层的对象,或者像您所做的那样,删除整个图层本身。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用多层 - KineticJS 的相关文章

随机推荐

  • Spring Security - 多个身份验证提供者

    我的 Web 应用程序有多个身份验证管理器 一个用于 API 一个用于 WEB 访问 api 应该只有一个基本的身份验证服务 通过 spring security 标记进行配置 如下所示
  • 通过仅知道其宽度权重来设置视图的高度以使其成为正方形

    我有这样的场景 填充容器的水平 LinearLayoutweightSum 100 以及内部的两个视图 每个视图的权重为 50 现在我如何使这两个视图成为正方形 例如 高度必须等于它们的宽度 LinearLayout 行数未知 所以基本上
  • xpath:包含()一组答案

    我正在尝试学习 XPath 但在进行嵌套搜索 使用 contains 时遇到问题 具体来说 我被问到以下问题 根据以下 dtd 有一个作者列表和一个书籍列表 编写一个 XPath 表达式 返回撰写书籍的作者数量 可以假设没有两个作者 ID
  • $浏览器未定义

    我正在尝试使用 jquery 进行浏览器检测 但它说 未捕获的引用错误 browser 未定义 代码就像 if browser msie condition browser 在 jquery 1 9 中被删除 看http jquery co
  • quotename 在 exec 内部不起作用吗?

    我正在尝试做类似的事情这个问题 https stackoverflow com questions 837358 sql create logon cant use parameter as username 答案建议在 exec 内部使用
  • 集合已修改;枚举操作可能无法执行[重复]

    这个问题在这里已经有答案了 我收到错误 集合已修改 枚举操作可能无法执行 我正在尝试删除除当前对象之外的所有打开的表单对象 FormCollection fc Application OpenForms foreach Form form
  • Apache 的 Velocity — getTemplate() 。如何传递字符串/对象而不是 .VM 文件

    Apache 的 Velocity getTemplate 实际上它允许传递 vm 文件名 我可以在这里传递字符串 对象吗 有什么方法可以传递字符串 对象吗 这是一个对我有用的示例代码 速度版本 1 7我使用 log4j 作为记录器 imp
  • 当我尝试使用 Facebook 或 Google 登录时,GetExternalLoginInfoAsync 始终返回 null

    我有一个问题OWIN验证 我总是收到空值GetExternalLoginInfoAsync 当我尝试使用 Facebook 或 Google 登录时 但是有一些神秘的情况 当我打开 Fiddler 时 我使用这种方法得到了正确的数据 我不明
  • 在代码中设置静态资源

    我的作品里有几种风格App xaml file
  • 如何对 pandas 数据框中的一组行执行函数?

    我正在尝试实施一个算法 https github com sebleier RDP 假设该算法作为函数 xyz 执行 该函数专门设计用于对轨迹数据 即 x y 坐标 进行操作 该函数有两个参数 第一个参数是list of tuples x
  • Bootstrap 3.0 少于 12 列的网格

    我正在尝试使用只有 7 列的网格创建一个日历 我想让这 7 列均匀分布并适合整行 目前 7 列加起来不等于 12 我得到 12 列 其中 5 列为空 Bootstrap 3 有没有办法让所有 7 分布在一行中 您最好的选择可能是创建您自己的
  • 为什么基于 Glass/GDK 的 VoiceListener 在 XE16 中只能捕获一次 VoiceCommand?

    在寻找一种使用 Google GDK 实现上下文语音命令的方法时 我遇到了这个post https stackoverflow com questions 21168267 然而 示例代码似乎仅适用于 XE12 不适用于 XE16 我最近测
  • 使用一对多关系在 Django 中创建 2 种不同的用户类型

    我正在创建一个篮球统计应用程序 我希望有两种不同的用户类型 教练和球员 我希望教练能够登录并仅查看他的球员的统计数据 因此 一名教练将拥有多名球员 我希望能够为每个教练创建用户个人资料 并仅显示他们的球员 而不是数据库中的所有球员 到目前为
  • 谷歌地图数据层,点击多边形并更改不透明度(Chrome Bug)

    我有一个谷歌地图 我使用 addGeoJson 将几何数据 加载到数据层 一切正常 直到我尝试在多边形上绑定事件以更改 opactiy 设置 我从OSM检索城市边界来绘制多边形 我认为我的json对象格式很好 我以Google作为参考 ht
  • TypeScript 编译中缺少 in-memory-data.service.ts

    浏览 Angular 教程 了解如何在中使用 http 请求https angular io tutorial toh pt6 https angular io tutorial toh pt6 我到了这一点 使用以下命令生成类 src a
  • Sublime Doctype HTML 片段

    有没有办法可以将下面的 作为片段插入 我尝试使用 首选项 gt 键绑定 用户 但引号确实很重要 您可以通过创建一个新的代码片段Tools gt New Snippet
  • onSharedPreferenceChanged 不会一直触发

    我对这个方法有一个奇怪的问题 当我编辑 EditTextPreference 时 仅当我更改值时才调用它 而在 MultiSelectListPreference 上 仅当我第一次更改时才调用它 这是我的片段代码 public class
  • Excel 解算器具有非相邻单元格约束?

    我是 Excel 求解器的新手 只是在拿起一本数据科学书籍后才了解它 我想更熟悉这个工具 所以我一直在尝试解决不同的问题 但我被困在一个问题上 我什至不确定是否可以使用求解器 基本上 我需要检查的约束是两个单元格是否相邻 我的问题 我有一堆
  • 在 Excel 中计算唯一值

    我需要在 Excel 中计算范围 C2 C2080 中的唯一值 谷歌搜索公式 SUM IF FREQUENCY MATCH C2 C2080 C2 C2080 0 MATCH C2 C280 C2 C2080 0 gt 0 1 返回不正确的
  • 使用多层 - KineticJS

    我正在使用 KineticJS 4 0 5 目前正在尝试绘制几个图层的内容 但只绘制了添加到舞台的最后一个图层 如果我正确理解了文档 这应该是可能的 否则我们为什么需要一层 我有三个不同的层 仅包含 Kinetic Rect 对象的背景层