在 konvajs 中添加另一个形状时会显示所有以前的形状
Posted
技术标签:
【中文标题】在 konvajs 中添加另一个形状时会显示所有以前的形状【英文标题】:All previous shapes show up while adding another shape in konvajs 【发布时间】:2019-04-23 17:04:27 【问题描述】:我遇到了 konvajs 的问题。我可以画东西,它们可以很好地保存,以便与最终视频一起播放。
但是,假设我在 0:30 暂停视频以添加一个圆圈并保存它,然后我想在 01:30 添加另一个形状,一旦我开始添加另一个形状,我之前添加的圆圈也出现在屏幕上。所以每次我尝试添加形状时,我都可以在屏幕上看到之前的所有形状。
注意:问题在于添加形状时,最终视频播放正常(0:30 处的圆圈和 01:30 处的另一个形状)。有什么我可以打电话来避免这种情况的事件吗?任何帮助将不胜感激。
【问题讨论】:
请在Minimal, Complete, and Verifiable example 上发布您的问题。不要链接到其他地方的完整代码,因为这些链接可能会随着时间的推移而中断。您要求忙碌的专家投入时间来帮助您 - 尊重这一点并清楚地解释您的问题。作为善意的建议,这很可能是您自己造成的错误,因为 Konvajs 通常可以正常工作。 @VanquiishedWombat 这是为了提供细节,而不是浪费任何人的时间。希望以下值得回答?即使我在添加另一个对象时调用隐藏或将不透明度降低到 0。如何避免保存可见性更改?或者您能否推荐其他视频替代方案以更好地应对用户体验挑战? 如何保存画布内容? 我在画布中获取元素数据并直接保存,这就是为什么我认为它也可能会尝试捕获隐藏或不透明度变化:/小要点如果你想看看gist.github.com/Jagatveer/318c6ff3643d7bbd15b3749c03796f2f 总的来说,画布没有时间线——你需要自己处理显示/隐藏。 【参考方案1】:当您将形状添加到图层中时,您只需要隐藏/删除以前的形状。
你可以这样做:
oldShape.destroy();
// or remove all previous shapes
layer.destroyChildren();
// then
layer.add(newShape);
layer.draw();
【讨论】:
以上是关于在 konvajs 中添加另一个形状时会显示所有以前的形状的主要内容,如果未能解决你的问题,请参考以下文章