为什么 KineticJS 文档中没有draw()方法?

2024-02-26

我花了几个小时在谷歌上搜索 Kinetic.Layer.draw() 方法。我发现的只是用例——没有关于如何、何时以及为何使用它的文档。也许它已经被弃用了?

这些是我在学习和使用这个精彩框架时使用的主要链接:

http://kineticjs.com/docs/index.html http://kineticjs.com/docs/index.html

http://www.html5canvastutorials.com/kineticjs/html5-canvas-events-tutorials-introduction-with-kineticjs/ http://www.html5canvastutorials.com/kineticjs/html5-canvas-events-tutorials-introduction-with-kineticjs/

如果有人向我解释这种误解,那将会非常有帮助。


实际上draw() and drawHit()在文档中,但它们的记录很少:

  • http://kineticjs.com/docs/Kinetic.Stage.html#draw http://kineticjs.com/docs/Kinetic.Stage.html#draw

draw()

绘制图层场景图

  • http://kineticjs.com/docs/Kinetic.Stage.html#drawHit http://kineticjs.com/docs/Kinetic.Stage.html#drawHit

drawHit()

绘制图层命中图

令人惊讶的是我找不到第三个也是最后一个draw方法:drawScene()在动力学文档中。同样令我惊讶的是,这 3 个函数没有被发现是从父类扩展而来的Kinetic.Stage: 动能容器 http://kineticjs.com/docs/Kinetic.Container.html

无论如何,我认为这个问题解释了差异完美的方法:KineticJS 绘制方法之间有什么区别? https://stackoverflow.com/questions/14722787/what-is-the-difference-between-kineticjs-draw-methods

当然,无法避免使用这些功能,您会need最终使用其中之一,除非您的画布/舞台在整个应用程序期间是静态的。 (*可能有例外,见下文)

回答您的问题:

How:

Call .draw() on any Kinetic.Container包括:stage layer and group,或任何Kinetic.Node其中包括所有Kinetic.Shape

例子:

stage.draw(); //Updates the scene renderer and hit graph for the stage
layer.drawHit(); //Updates the hit graph for layer
rect.drawScene(); //Updates the scene renderer for this Kinetic.Rect

Why:

我认为不让所有东西都重绘是一个性能问题Kinetic.Stage每一次都有变化。通过这种方式使用绘制方法,我们可以在需要更新和渲染舞台时以编程方式进行控制。正如您可能想象的那样,如果场景中有 10000 个节点,则必须一直绘制舞台的成本相当高。

When:

drawScene()

任何时候您需要更新场景渲染器(例如使用.setFill()更改形状的填充)

drawHit()

要更新命中图如果您将事件绑定到形状,以便任何事件的点击区域都会更新为节点更改。

draw()

每当您需要执行上述两项操作时。

Finally,也许示例/实验室将是这里最有益的学习工具,所以我准备了一个JSFIDDLE http://jsfiddle.net/projeqht/6udqk/供您测试差异。按照说明进行操作并阅读我的评论,以更好地了解正在发生的事情。

*NOTE:我上面提到有一个例外,必须使用绘制方法。那是因为每当您向舞台添加图层时,图层中的所有内容都会自动绘制。在小提琴的底部有一个小例子。

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

为什么 KineticJS 文档中没有draw()方法? 的相关文章

随机推荐

  • SQL 比较和空值的问题

    我有一个更新查询 当一个表中的值与另一表中的字段不匹配时 该查询会更新一个表中的字段 UPDATE table1 SET a field1 b field3 FROM table1 a table2 b WHERE a field2 b f
  • 开发环境与测试和生产环境不同?

    如果开发人员想要实现sql2008开发环境 但我们仍然被迫使用sql2000测试和sql2000生产环境 你会怎么说 在开发服务器上使用sql2008会有什么问题吗 当然 您需要知道哪些功能您无法使用 因此将工作从 sql2008 服务器迁
  • 扑。在非常大的 ListView 上设置 ListView 初始位置

    我想创建一个几乎无限的元素列表 但我想将列表的初始位置设置为某个特定元素 像这样的图片 其中索引 0 是初始位置 并且该列表可能会也可能不会在两个方向上延伸很长 我可以创建我的元素 例如 Widget build tile int i re
  • 文本装饰:无不适用于 ul

    我看到了很多与这个主题相关的问题 但没有一个回答我的问题 我正在为一个网站制作一个侧边栏 我试图在与侧边栏宽度相同的框中创建链接 只有一点填充 也许是10 15px 并且每个链接之间有一点点空间 也许 3 像素 但我似乎无法得到 text
  • 如何更改gridview所选项目的背景颜色?

    如何在 Asp net Web 应用程序中更改 gridview 所选项目的背景颜色 您可以在 GridView 标记下的 aspx 页面中执行此操作
  • React-router URL 在刷新或手动写入时不起作用

    我正在使用 React router 当我单击链接按钮时它工作正常 但是当我刷新网页时它不会加载我想要的内容 例如 我在localhost joblist一切都很好 因为我按链接到达这里 但if我刷新我得到的网页 Cannot GET jo
  • Node.js - 启动进程(firebase 模拟器)并读取其输出

    我想在 Jest 测试之前启动 firebase 模拟器 执行此操作 但以编程方式执行 E my projct gt firebase emulators start only firestore i emulators Starting
  • 字符串中的动态 t-sql 引号

    我在存储过程中有以下内容 DECLARE new column name varchar 9 DECLARE table name varchar 16 DECLARE SQLString nvarchar 2000 SET new col
  • 如何使用 Play 2.0 定义标签?

    关于 Play 2 0 模板引擎的文档并不多 如何使用 Scala 模板创建标签 play 2 0 中的模板引擎直接来自 play 1 0 scala 模块 如果您仍然想知道像 Scala 这样的函数式语言能带来什么好处 那么这肯定是它的亮
  • Ruby 正则表达式:即使没有 m 修饰符,^ 也匹配行首?

    红宝石 1 8 7 我使用带有 的正则表达式来匹配字符串开头的模式 问题是 如果在开始处找到该模式any line在字符串中它仍然匹配 如果我使用 m 修饰符 这是我期望的行为 但我没有 irb irb main 001 0 gt str
  • 多个按顺序的 HTTP POST

    我有一个正在开发的应用程序 我需要按顺序执行 3 个 HTTP POST 实现这一点的最佳方法是什么 我是不是该 使每个 HTTP Post 都有自己的异步类 并以菊花链方式连接异步类 即从第一个异步的 onPostExecute 调用第二
  • 空指针测试性能

    C 中测试引用类型变量是否为空指针的性能如何 like if x null 与测试小于零的整数甚至布尔值是否为假相比 是否还有其他关于此类的问题空指针测试 例如是产生的垃圾 我对游戏的每一帧进行了数百次这样的测试 我想知道这些测试是否会导致
  • 如何在没有 $this 的情况下处理类变量?

    我正在制作一个带有 OOP 概念的 WordPress 插件 但我面临一些有线问题 首先我有一个main plugin php文件 我有这样的课程 include once plugin dir path FILE something ph
  • 如何无异常地检查文件是否存在?

    如何在不使用try https docs python org 3 6 reference compound stmts html try陈述 如果您检查的原因是这样您可以执行类似的操作if file exists open it 使用更安
  • pandas 按大写字母排序

    运行这段代码 df pd DataFrame ADc Abc AEc columns Test index 0 1 2 df sort columns Test axis 0 ascending False inplace True 返回排
  • C++开源项目推荐[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ActionBar 中操作/菜单项的动态控制

    有没有办法动态禁用 隐藏 添加 删除 ActionBar 中的菜单项 例如 在用户在活动中填写有效的电话号码之前 操作将被禁用 我在 ActionBar API 中没有找到任何有用的方法 唯一的方法似乎是在 ActionBar 中使用自定义
  • 如何使用imagick的writeImage()函数?

    如果我将脚本保存在与正在操作的图像相同的目录中 则此方法有效 并且结果图像 foo jpg 也在同一位置生成 但是 如果脚本位于一个位置 而我希望使用的图像位于另一个位置 而我希望保存缩略图的位置位于其他位置 那么如何指定这些路径呢 做这样
  • 使用 Jekyll 插件在 _site 内生成文件

    我编写了一个 Jekyll 插件 Tags 它生成一个文件并返回该文件的链接字符串 一切都很好 但如果我将该文件直接写入 site 文件夹 它就会被删除 如果我将该文件放在 site 文件夹之外 则它不会在 site 内生成 我应该在哪里以
  • 为什么 KineticJS 文档中没有draw()方法?

    我花了几个小时在谷歌上搜索 Kinetic Layer draw 方法 我发现的只是用例 没有关于如何 何时以及为何使用它的文档 也许它已经被弃用了 这些是我在学习和使用这个精彩框架时使用的主要链接 http kineticjs com d