- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发使用 konva.js 构建的图形编辑器
经过数小时的研究,我无法获得 transformer调整为 group 的裁剪尺寸
我有一个定义 simple clip 的组区域,其中有 2 rectangles大小和位置完全相同,相互堆叠。
裁剪组效果很好;但是,此应用程序是动态的,因此需要用户输入来设置剪辑区域。当我调用 group.clip()
和 layer.batchDraw()
时,它会进行裁剪,但边界矩形(变形器)不会更新,即使在我调用 >transformer.forceUpdate()
就可以了,运气不好。
当我销毁
transformer 并重新创建它时,它仍然指示完整尺寸(不是裁剪尺寸)并且裁剪区域仍然存在。
为清楚起见,这里有一个屏幕截图: Screenshot-20191008-153503.png
我怀疑这是否有帮助,代码位于单独的文件中,并且值来自所提到的用户输入。对于它的值(value),这是给你的:
let grp = new Konva.Group({x:o.x,y:o.y,draggable:o.draggable,clip:{x:0,y:0,width:o.width,height:o.height}});
我在此处粘贴的任何其他代码只会让我们所有人感到困惑,它太多了,而且我知道人们在看到它时会跑,所以,如果我应该添加更多代码,请在评论中告诉我?
我将不胜感激任何帮助,谢谢。
最佳答案
同时 lavtron的答案可能有效,更直接的方法解决了这个问题:
(function()
{
let func = Konva.Group.prototype.getClientRect;
let orig = {enumerable:false, configurable:false, writable:false, value:func};
let altr = {enumerable:false, configurable:false, writable:false, value:function(t)
{
let attr = this.attrs;
let resl = this.getOrigClientRect(t);
if(attr.hasOwnProperty('clipWidth')){resl.width=attr.clipWidth};
if(attr.hasOwnProperty('clipHeight')){resl.height=attr.clipHeight};
return resl;
}};
Object.defineProperty(Konva.Group.prototype,'getOrigClientRect', orig);
Object.defineProperty(Konva.Group.prototype,'getClientRect', altr);
})();
要实现此补丁:
konva.js
脚本之后,如果您使用 RequireJS
加载 KonvaJS,您应该相应地命名导入的对象和/或更新上面的代码,-或- 将其保留为 Konva
(注意大写的 K)。
这通过使用原始 getClientRect
方法的结果并使用剪辑组的 clipWidth
和 clipHeight
更新它来工作 - 仅当它具有这些属性;否则返回未修改的结果。
这已经过测试并且运行良好;但是,如果 konva.js 存储库的分发源代码可以相应地更新,那就更好了。
关于javascript - KonvaJS - group.clip() 后没有转换器更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58289473/
我在 Eclipse 上制作了一个视频游戏,我将制作一首菜单歌曲并停止该歌曲,但 Clip.stop();不工作我不知道为什么请帮助我。菜单歌曲Clip.play();和Clip.loop(Clip.
我想制作一个类似于单元测试的框架,允许我为各个规则编写自定义测试。我希望每个测试都在它自己的文件中,即 test_R1.clp 将是规则 R1 的测试文件。每个测试都应该能够加载它自己的事实文件。我已
我注意到使用 clip 属性也会删除 box-shadow 属性。有没有办法在同一个元素上同时使用两者? 一些背景:我为三种类型的产品设置了三列。每个产品都有一个图像,每个图像的大小都不同。我想标准化
我这里有一些代码,这让我很困惑;我想弄清楚为什么会出现空指针异常。我设置了一个 for-each-loop 来初始化每个剪辑。如果我自己初始化每一个,它就可以正常工作,并且可以播放剪辑。 musi
在我看来,Instance可以做到Fact可以做到的一切,Fact存在的意义是什么?换句话说,实例和事实有什么区别?有没有只能用Fact的情况? 这让我很困扰,我搜索了很多但没有给我答案,有人可以帮助
我正在尝试循环播放一个小的“.wav”音频文件。我使用的代码运行良好,但我想在循环音频之间设置一些时间间隔。下面提供了代码。 try { // from a wave File
我对将 Clips 嵌入到 C 和 C++ 中的区别感到困惑。我已按照高级编程指南(第 4.17 章)中的步骤成功将 Clips 嵌入到 C 程序中现在,我想将 Clips 嵌入到 C++ 程序中,我
我正在编写一个小脚本,让用户可以将自定义图像加载到网页的 Canvas 中。到目前为止,效果非常好。 Canvas 使用 fabric.js 脚本进行初始化,以便让用户执行一些简单的编辑任务。 “上传
当我第一次启动 App Clip 时,iOS 决定自动显示应用横幅。我们的 App Clip 本质上是该应用的完整版本,因此我们不希望我们的用户立即升级到该应用。 有没有办法在启动时隐藏它? 最佳答案
Sutherland-Hodgman 算法中解释了 4 条用于裁剪多边形的规则: 如果两个顶点都在裁剪区域内 - 保存第二个 如果第一个顶点在内部,第二个在外部 - 计算与裁剪区域边界的交点并保存 如
我创建了一个“登录页面”,它是一个影片剪辑。我的另一个页面是“主页”,这是另一个影片剪辑。所以我想做的是.. 我想将我的一个移动剪辑导航到另一个影片剪辑。和 `我不想使用时间线。 只需在actions
有人可以提供有关如何在 linux 环境中安装 clips 和 clipspy 的分步过程。 pip install clipspy 对我不起作用,因为我的组织不允许使用 pip。我需要从源代码构建。
我写了一个程序来断言这条规则的 LHS 中的事实: (defrule check-open-better (declare (salience 50)) ?f1 (assert (node
我有 10 个观察环境的传感器。如果正常,则传感器为 1,否则为 0。 如果至少有 3 个传感器处于 0 状态,我需要创建一个函数,它将向终端打印一条警告消息,并且消息警告只显示一次。这是我需要在剪辑
我正在尝试为示例规则绘制一个 Rete 网络,该规则在不同模式的变量之间没有绑定(bind)。我知道beta网络是用来确保不同模式下的弯曲变量是一致的。 (defrule R1 (type1 c1
我正在使用 剪辑 ( http://clipsrules.sourceforge.net/ ) 用于大学项目,但我无法直接从文件运行程序,在这种情况下,我不想使用提示插入 FACTS 和 RULES。
我想在运行规则时增加安全性。现在,它什么也没有改变。事实(human_resources n)确实存在。 (defglobal?security = 0) (第1条规则 (human_resource
[注意:寻找一个跨浏览器的解决方案,它不会在每一波 goo 之间瞬间闪烁 body 的背景,如 ccprog 的回答中所见;理想情况下,解决方案不应涉及等到第一波结束才开始显示第二波,以便两个波可以同
我在以下无法理解的代码中遇到错误 imgColor = cv2.imread(fileName, cv2.IMREAD_COLOR) imgColor1= cv2.cvtColor(imgColor,
我通过使用 CLIPSJNI 改编 WineDemo.clp 示例来尝试此操作。 (defmodule SEVERITY (import MAIN ?ALL) (exp
我是一名优秀的程序员,十分优秀!