配置应用
通过配置满足您的个性化需求。
import { Leafer } from 'leafer-ui'
const config = {
view: 'id',
start: true,
}
const leafer = new Leafer(config)
// 部分配置可在运行中实时修改生效, 如:
leafer.config.usePartRender = false
leafer.config.pointer.autoMoveDistance = 5
应用
autoStart: boolean
是否自动启动应用,默认为 true。
import { Leafer, ResizeEvent } from 'leafer-ui'
const leafer = new Leafer({
view: window,
autoStart: false,
})
// create leafs ...
leafer.start() // 当图形数量很多,异步创建完所有图形后,通过手动 start,可以加快创建速度
画布
view
放置应用的的视图容器, 支持 window 、document、div、canvas 标签, 可使用 id 字符串。
width: number
设置画布高度。
height: number
设置画布宽度。
pixelRatio: number
设置画布分辨率, 默认使用当前设备分辨率。
fill: string
设置背景颜色。
hittable: boolean
设置是否响应碰撞事件(交互事件)
import { Leafer } from "leafer-ui"
const leafer = new Leafer({
view: document,
width: 800,
height: 600
pixelRatio: 2,
fill: '#F6F6F6',
hittable: false
})
渲染
usePartRender: boolean
是否使用局部渲染, 默认为 true
自动布局
当 width 或 height 不存在值时,画布会进行自动布局。
top: number
距离顶部的距离, 默认为 0。
left: number
距离左侧的距离, 默认为 0。
right: number
距离右侧的距离, 默认为 0。
bottom: number
距离底部的距离, 默认为 0。
import { Leafer } from 'leafer-ui'
const leafer = new Leafer({
view: window,
top: 50,
right: 0,
bottom: 30,
width: 200,
})
监听 Resize 事件
import { Leafer, ResizeEvent } from 'leafer-ui'
const leafer = new Leafer({ view: window })
leafer.on(ResizeEvent.RESIZE, (e: ResizeEvent) => {
console.log(e.width, e.height, e.pixelRatio, e.old)
})
视窗交互
useZoom: boolean
是否使用视窗缩放交互功能, 默认为 true。
停用后,只能滚动页面,适用于文档类应用。
useMove: boolean
是否使用视窗滚动交互功能, 默认为 true。
停用后,缩放交互功能也会停用,之后可以进行自定义视窗交互。
设备交互
pointer
pointer.hitRadius: number
光标的碰撞半径, 默认为 5。
当光标距离元素在 hitRadius 范围内时,应用可以拾取到元素。
pointer.through: boolean
点击事件是否获取穿透路径,通过穿透路径可以找到被当前元素遮挡的底部元素。
import { Leafer, Rect, PointerEvent } from 'leafer-ui'
const leafer = new Leafer({ view: window })
const data = {
x: 100,
y: 100,
width: 200,
height: 200,
fill: '#32cd00',
}
const bottomRect = new Rect(data)
leafer.add(bottomRect)
const rect = new Rect(data)
leafer.add(rect)
rect.on(PointerEvent.DOWN, (e: PointerEvent) => {
console.log(e.throughPath) // throughPath: ILeafList = { list: [bottomRect, rect, leafer] }
})
pointer.clickTime: number
双击事件中,每次单击和间隔的最大时长, 默认为 120ms。
必须在 120ms + 120ms 间隔 + 120ms 内 完成双击, 超过时长将不触发双击事件。
pointer.longPressTime: number
产生长按事件的最小时长,默认为 800ms。
pointer.transformTime: number
当缩放、滚动、旋转事件未继续触发,一段时间后,自动触发结束事件, 默认为 500ms。
由于鼠标滚轮、触摸板无法直接检测到结束事件,因此采用模拟方式触发。
pointer.dragDistance: number
超过一定的距离后,才能触发拖拽事件,防止误触,默认为 2。
pointer.swipeDistance: number
超过一定的距离后,才能触发滑动事件,默认为 20。
pointer.autoMoveDistance: number
设置每次自动平移视图的距离,默认为 2。
当拖拽元素到达界面边界时,会自动进行平移视图。
import { Leafer, Rect } from 'leafer-ui'
const leafer = new Leafer({
view: window,
pointer: {
autoMoveDistance: 10, // 加快平移速度
},
})
const data = {
x: 100,
y: 100,
width: 200,
height: 200,
fill: '#32cd79',
draggable: true,
}
const rect = new Rect(data)
leafer.add(rect)
data.y = 400
leafer.add(new Rect(data))
wheel
wheel.zoomMode: boolean
是否开启鼠标滚动进行缩放视图的模式, 默认为 false。
当使用缩放模式时,可按下鼠标中键进行平移视图操作。
wheel.zoomSpeed: number
缩放的速度, 用于自定义适配不同浏览器的速度。
wheel.moveSpeed: number
滚动的速度, 用于自定义适配不同浏览器的速度。
wheel.rotateSpeed: number
旋转的速度, 用于自定义适配不同浏览器的速度。