问题标签 [konvajs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
488 浏览

javascript - 将多个 imageData 结构组合到一个画布中

我正在使用Konvajs框架来处理canvas. 我需要创建三个形状(插槽)并进行一些操作。它可以工作,但我也需要处理像素,我通过 获取图像getImageData,将其存储在内部结构中,然后用于操作。

完成工作后,我想将这些imageData结构合并为一个,但我做不到。使用这个答案我尝试这样做,但总是得到:

konva.min.js:29 未捕获的类型错误:无法在“CanvasRenderingContext2D”上执行“drawImage”:提供的值不是“(HTMLImageElement 或 HTMLVideoElement 或 HTMLCanvasElement 或 ImageBitmap)”类型

这是我的代码片段:

我的错误在哪里?

更新:

改行:

至:

和画布保存,但我只看到最后保存的图片。为什么?

0 投票
1 回答
730 浏览

html5-canvas - 以高分辨率导出画布的可见区域

我正在为此制作一个 html5 画布,我正在使用 konvajs 和 anglurjs。我想以更高的分辨率导出画布的可见区域。

我可以使用stage.toDataURL('JPEG',1.0)导出可见区域,但它会重新调整图像的分辨率。它根据浏览器窗口设置图像尺寸,但我想以与导入相同的分辨率导出图像。

0 投票
2 回答
17911 浏览

javascript - 由于目标被视为被动,无法在被动 Konva 事件侦听器中阻止默认值

我正在使用Konva.js@1.3.0库(带有 React@15.4.2 和react-konva)来构建一个简单的 2D 游戏。

在 Chrome 中测试应用程序时一切正常。但是,当我打开开发工具并切换到设备工具栏(以在移动设备大小的视口上查看应用程序)时,我收到以下警告:

由于目标被视为被动,无法在被动事件侦听器中阻止默认值。
见 http‍s://www.chromestatus.com/features/5093566007214080

我已经阅读了链接并研究{passive: true}AddEventListener. 但是,我并没有直接调用AddEventListener我的代码,它都是通过 Konva 和 React 抽象出来的。

此外,附加到 Konva 生成的画布元素的点击事件都没有在设备模式下工作。如果我退出设备工具栏,一切正常,点击元素按预期工作。

如何在 Konva/React 中启用被动事件侦听器?(这甚至是解决方案吗?)

0 投票
1 回答
979 浏览

konvajs - 在 Konva 中为组使用 show() 和 hide()

我创建了一个 Konva Group 并向其中添加了几个对象。当我调用hide()该组然后layer.draw()刷新画布时,该对象仍在显示。我究竟做错了什么?

(康瓦 1.4.0)

0 投票
1 回答
914 浏览

javascript - 如何制作不透明的形状,而不是 konvajs 中的边框

我正在使用 konvajs 在画布上绘图。我刚刚找到了一个 opacity 属性,我可以在其中将整个形状的不透明度(在我的情况下是一条闭合线)设置为 alpha 值,但这也包括边框而不仅仅是填充不透明度。

是否有可能只使填充具有一些不透明度并保持边框完全可见?

0 投票
1 回答
382 浏览

javascript - 当 Konva 动画结束时如何采取行动?

这个问题是特定于命运之轮的例子。作为 javascript 的新手,我设法更改了楔形的数量、颜色和标签,但我无法将函数绑定到旋转动画的结束事件。这将是一个关于冒险行为的小型心理学实验,我需要确定在轮换结束时哪个楔子达到了标记。

0 投票
2 回答
1910 浏览

javascript - 为许多图像优化 Konva.js

我目前正在使用 Konva.js 在几个堆叠的 FastLayers 上平铺许多 PNG 图像。PNG 包含不透明度,它们不需要拖动或命中框。瓷砖经常更换,这似乎适用于尺寸约为 30x30 的中型网格。一旦瓦片开始增长到大约 100x100 甚至 60x60,更换单个瓦片时性能开始变慢。

我已经开始研究“分块”图块,即将图块添加到较小的 FastLayer 组中。例如,单个 100x100 FastLayer 将被分成几个 10x10 FastLayer。当单个图块发生变化时,想法是只有该块应该重新渲染,理想情况下可以加快整体渲染时间。

这是一个很好的设计尝试,还是我应该尝试不同的方法?我查看了 Konva.js 文档中的性能提示,但没有看到与此案例直接相关的任何内容。

0 投票
0 回答
215 浏览

konvajs - KonvaJS 中的战争迷雾层

我有一个正在开发的浏览器策略游戏,将实现战争迷雾,它将在游戏地图上绘制两层迷雾(以前显示过,从未显示过)。如果我渲染网格上的每个雾方块而不是打孔,我对性能有些怀疑。

对于打孔,我在Konva Free Drawing 示例中看到了示例,在该示例中,我可以擦除玩家一直在使用画布上下文的任何位置...

但是在擦除整个画布的示例中。我不知道我是否可以将它与图层一起使用。我不想擦除地图图层,只需擦除我在地图上的图层上绘制为矩形的大雾纹理的一部分。

有没有人有任何建议或有一个可以解决这个问题的工作示例?

0 投票
1 回答
3418 浏览

javascript - Konvajs 如何动态更改图像 src

我创建了这样的 Konva 图像

现在我需要知道如何更新创建的 Konva.Image 对象的图像 src/url。

您可以在此处找到文档:https ://konvajs.github.io/api/Konva.Image.html

0 投票
2 回答
1277 浏览

konvajs - Konva js 中的拖放限制

我最近开始学习Konva-JS ...请帮助我:)

正如我们在这个示例Animals_on_the_Beach_Game中看到的那样,动物的图像是可拖动的,可以放在任何地方......但我想改变它,让它只能放在特定的地方......我能做什么? 谢谢你 :)