在基于SFC的vuejs项目上使用paperjs

时间:2018-12-11 11:53:33

标签: vue.js paperjs

我有一个基于单个文件组件的vuejs项目。我想基于我的组件数据添加画布并用paperjs动态绘制事物。正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

自我回应。运作中的证监会。

<template>
    <canvas resize id="main-canvas">{{circle_diameter}}</canvas>
</template>
<script>
import paper from 'paper'
export default {
    data: () => ({ x: 20, y: 20 }),
    props: ['circle_diameter'],
    methods: {
        updateDrawing() {
            paper.setup(document.getElementById('main-canvas'))
            // Now, draw your things based on component state.
            const point = new paper.Point(this.x, this.y)
            const circle = new paper.Path.Circle(point, this.circle_diameter/2)
            circle.fillColor = 'grey'
            circle.strokeColor = 'black'
        },
    },
    updated() {
        this.updateDrawing()
    },
}
</script>

编辑

由于paperjs将在vue范围之外进行渲染,因此除非将{{circle_diameter}}放入canvas html标签中,否则绘图不会起作用。这样,您每次强制更改道具时都强制Vue调用update()。