Skip to content

uniapp

注意:暂时不支持在组件中使用,微信小程序的选择 api 无法查找到组件中的 canvas。

普通结构

vue
<template>
  <canvas
    id="leafer"
    type="2d"
    @touchstart="receiveEvent"
    @touchmove="receiveEvent"
    @touchend="receiveEvent"
    @touchcancel="receiveEvent"
  ></canvas>
</template>

<script setup lang="ts">
import { onReady } from '@dcloudio/uni-app'
import { Leafer, Rect, useCanvas } from '@leafer-ui/miniapp'

useCanvas('canvas', uni) // 绑定平台全局变量

let leafer: Leafer

onReady(() => {
  leafer = new Leafer({ view: 'leafer' })

  const rect = new Rect({
    x: 100,
    y: 100,
    width: 100,
    height: 100,
    fill: '#32cd79',
    draggable: true,
  })

  leafer.add(rect)
})

function receiveEvent(event: TouchEvent) {
  leafer.receiveEvent(event) // 需手动接收、传递画布交互事件给leafer
}
</script>

<style>
page {
  height: 100%;
}
#leafer {
  width: 100%;
  height: 100%;
}
</style>

App 结构 - 图形编辑器

vue
<template>
  <view
    id="leafer"
    @touchstart="receiveEvent"
    @touchmove="receiveEvent"
    @touchend="receiveEvent"
    @touchcancel="receiveEvent"
  >
    <canvas id="leafer-tree" type="2d"></canvas>
    <canvas id="leafer-sky" type="2d"></canvas>
  </view>
</template>

<script setup lang="ts">
import { onReady } from '@dcloudio/uni-app'
import { App, Rect, useCanvas } from '@leafer-ui/miniapp'
import '@leafer-in/editor' // 导入图形编辑器插件

useCanvas('canvas', uni) // 绑定平台全局变量

let app: App

onReady(() => {
  app = new App({
    view: 'leafer',
    mobile: true, // 优化手机端体验
    tree: { canvas: 'leafer-tree' }, // 需指定canvas
    sky: { canvas: 'leafer-sky' },
    editor: {}, // 会自动创建 editor实例
  })

  const rect = new Rect({
    x: 100,
    y: 100,
    width: 100,
    height: 100,
    fill: '#32cd79',
    editable: true,
  })

  app.tree.add(rect)
})

function receiveEvent(event: TouchEvent) {
  app.receiveEvent(event) // 需手动接收、传递画布交互事件给leafer
}
</script>

<style>
page {
  height: 100%;
}
#leafer {
  width: 100%;
  height: 100%;
}
#leafer-tree {
  position: absolute;
  width: 100%;
  height: 100%;
}
#leafer-sky {
  position: absolute;
  width: 100%;
  height: 100%;
}
</style>

Released under the MIT License.