vue.js - 在一个基于SFC的vuejs项目上使用paperjs
问题描述
我有一个基于单文件组件的 vuejs 项目。我想根据我的组件数据添加一个画布并用 paperjs 动态地绘制东西。正确的方法是什么?
解决方案
自我回应。一个工作的证监会。
<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>
编辑
{{circle_diameter}}
由于 paperjs 将在 vue 范围之外渲染,因此在您将其放入 canvas html 标记之前,绘图不是反应性的。这样,每次 prop 更改时,您都会强制 Vue 调用 update()。
推荐阅读
- c++ - 如何在 C++ 中可视化有关完整链接聚类的分步过程?
- python - 根据 numpy 数组中的列值获取行号
- android - 自定义模型类型的自定义数组适配器仅返回一个值
- python - 根据列值将 2 列分组到类别
- android - 设置 MoPub 以调解 AdMob 原生广告
- java - 扫描 Web 应用资源路径中的根资源和提供程序类:/WEB-INF/lib/WEB-INF/classes
- r - R Have:从导入的 SPSS 文件访问列标签
- sas - _NULL_ 防止覆盖表?
- javascript - 如何缩放传单中的所有标记
- python - 使用 BeautifulSoup 请求时如何解决超时错误?