From 5e66bd29ff0104f93475c2d8e3cbe58d90808f8a Mon Sep 17 00:00:00 2001 From: wanglin <1013335014@qq.com> Date: Thu, 22 Jul 2021 08:03:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/Render.js | 7 +++--- simple-mind-map/src/Select.js | 43 +++++++++++++++++++++++++++-------- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/simple-mind-map/src/Render.js b/simple-mind-map/src/Render.js index 222bbe0d..d6424d37 100644 --- a/simple-mind-map/src/Render.js +++ b/simple-mind-map/src/Render.js @@ -336,9 +336,10 @@ class Render { "children": [] }) if (node.isRoot) { - this.mindMap.batchExecution.push('renderNode' + index, () => { - node.renderNode() - }) + node.initRender = true + // this.mindMap.batchExecution.push('renderNode' + index, () => { + // node.renderNode() + // }) } }) this.mindMap.render() diff --git a/simple-mind-map/src/Select.js b/simple-mind-map/src/Select.js index 3b62e223..a8de6bcc 100644 --- a/simple-mind-map/src/Select.js +++ b/simple-mind-map/src/Select.js @@ -50,20 +50,15 @@ class Select { if (Math.abs(x - this.mouseDownX) <= 10 && Math.abs(y - this.mouseDownY) <= 10) { return } - this.rect.plot([ - [this.mouseDownX, this.mouseDownY], - [this.mouseMoveX, this.mouseDownY], - [this.mouseMoveX, this.mouseMoveY], - [this.mouseDownX, this.mouseMoveY] - ]) - this.checkInNodes() - this.move(x, y) + clearTimeout(this.autoMoveTimer) + this.onMove(x, y) }) this.mindMap.on('mouseup', (e) => { if (!this.isMousedown) { return; } this.mindMap.emit('node_active', null, this.mindMap.renderer.activeNodeList) + clearTimeout(this.autoMoveTimer) this.isMousedown = false if (this.rect) this.rect.remove() this.rect = null @@ -73,31 +68,59 @@ class Select { /** * @Author: 王林 * @Date: 2021-07-13 07:55:49 - * @Desc: 鼠标移动到边缘后移动画布 + * @Desc: 鼠标移动事件 */ - move (x, y) { + onMove (x, y) { + // 绘制矩形 + this.rect.plot([ + [this.mouseDownX, this.mouseDownY], + [this.mouseMoveX, this.mouseDownY], + [this.mouseMoveX, this.mouseMoveY], + [this.mouseDownX, this.mouseMoveY] + ]) + this.checkInNodes() + // 检测边缘移动 let step = this.mindMap.opt.selectTranslateStep let limit = this.mindMap.opt.selectTranslateLimit + let count = 0 // 左边缘 if (x <= this.mindMap.elRect.left + limit) { this.mouseDownX += step this.mindMap.view.translateX(step) + count++ } // 右边缘 if (x >= this.mindMap.elRect.right - limit) { this.mouseDownX -= step this.mindMap.view.translateX(-step) + count++ } // 上边缘 if (y <= this.mindMap.elRect.top + limit) { this.mouseDownY += step this.mindMap.view.translateY(step) + count++ } // 下边缘 if (y >= this.mindMap.elRect.bottom - limit) { this.mouseDownY -= step this.mindMap.view.translateY(-step) + count++ } + if (count > 0) { + this.startAutoMove(x, y) + } + } + + /** + * @Author: 王林 + * @Date: 2021-07-22 08:02:23 + * @Desc: 开启自动移动 + */ + startAutoMove(x, y) { + this.autoMoveTimer = setTimeout(() => { + this.onMove(x, y) + }, 20); } /**