html - 不明白为什么 Konva 文字不隐藏
问题描述
我想Konva.text
在拖动矩形时隐藏并显示一个 -> 显示文本并拖动结束隐藏文本,但我不明白为什么当我拖动结束时Konva.text
不隐藏。
var stage = new Konva.Stage({ container: 'container', width: 400, height: 250 });
var layer2 = new Konva.Layer(); var groupe = new Konva.Group({})
var lineV = new Konva.Rect({ x: 50, y: 50, width: 70, height: 50, draggable: true, stroke: 'black'}); groupe.add(lineV)
var info = new Konva.Text({
text: 'info',
visible: false,
stroke: '#fff', fontSize: 35, fontFamily: 'Calibri', fill: '#000', align: 'center', name: "infoBulle"});
layer2.add(info);
groupe.on('dragstart', function () {
console.log("drag")
info.visible(true);
});
groupe.on('dragend', function () {
console.log("drop");
info.visible(false)
console.log(info.isVisible());
});
stage.add(layer2.add(groupe))
stage.draw();
<script src="https://unpkg.com/konva@2.4.2/konva.min.js"></script>
<div id="container" width="400" height="250" style="border: 2px solid red;"></div>
解决方案
每次更新图层时都需要重新绘制图层。第一次显示文本更新是可见的,因为 Konva 会在dragmove
操作时自动更新图层。
var stage = new Konva.Stage({ container: 'container', width: 400, height: 250 });
var layer2 = new Konva.Layer(); var groupe = new Konva.Group({})
var lineV = new Konva.Rect({ x: 50, y: 50, width: 70, height: 50, draggable: true, stroke: 'black'}); groupe.add(lineV)
var info = new Konva.Text({
text: 'info',
visible: false,
stroke: '#fff', fontSize: 35, fontFamily: 'Calibri', fill: '#000', align: 'center', name: "infoBulle"});
layer2.add(info);
groupe.on('dragstart', function () {
console.log("drag")
info.visible(true);
layer2.batchDraw();
});
groupe.on('dragend', function () {
console.log("drop");
info.visible(false)
layer2.batchDraw();
console.log(info.isVisible());
});
stage.add(layer2.add(groupe))
stage.draw();
<script src="https://unpkg.com/konva@2.4.2/konva.min.js"></script>
<div id="container" width="400" height="250" style="border: 2px solid red;"></div>
推荐阅读
- arangodb - Arangodb 分隔符分析器
- c# - 如何在 Asp.Net Core 上使用 ORMi 获得统一写入过滤器状态?
- jsf - 无法使用 List 值加载 p:datatable 的内容
> - java - 我想用静态照片替换最近使用的应用程序页面上的屏幕截图
- text-to-speech - 使用 google cloud api 时的计费/配额问题
- c++ - 错误 C2085:'int_fast63_t': 不在形式参数列表中
- android - 当我将 Kotlin 用于 Google Play 时,是否需要添加实现 'com.android.billingclient:billing-ktx:2.1.0'?
- android - 从其他包启动前台服务
- elasticsearch - Elasticsearch - 匹配嵌套对象数组中的所有子项
- android - 在 Android 中共享 pdf 文件时文件名未更改