Skip to main content

如何使用 Vue 实现画布图形的拖放功能?

要在画布上的任何节点启用拖放功能,只需将 draggable: true 属性传递给组件即可。

当你拖放一个图形时,建议将其位置保存到你的应用存储中。你可以使用 dragstartdragend 事件来实现这一目的。

说明:尝试拖动文本。注意它在被拖动时颜色的变化。

<template>
  <v-stage ref="stage" :config="stageSize">
    <v-layer ref="layer">
      <v-text
        @dragstart="handleDragStart"
        @dragend="handleDragEnd"
        :config="{
          text: '可拖动文本',
          x: 50,
          y: 50,
          draggable: true,
          fill: isDragging ? 'green' : 'black'
        }"
      />
    </v-layer>
  </v-stage>
</template>

<script>
const width = window.innerWidth;
const height = window.innerHeight;

export default {
  data() {
    return {
      stageSize: {
        width: width,
        height: height
      },
      isDragging: false
    };
  },
  methods: {
    handleDragStart() {
      this.isDragging = true;
    },
    handleDragEnd() {
      this.isDragging = false;
    }
  }
};
</script>