Playground
画布实例
> API Detail
const ctx = useClientContext()
console.log(ctx.playground)
config
画布配置, 提供 zoom、scroll 等状态
> API Detail
updateConfig
- zoom
number
当前缩放比例
- scrollX
- scrollY
- minZoom
- maxZoom
- readonly
- disabled
- width
- height
// get current config state
ctx.playground.config.config.zoom
ctx.playground.config.config.readonly
// updateConfig
ctx.playground.config.updateConfig({
zoom: 0.8,
minZoom: 0.1,
maxZoom: 2,
readonly: true
})
fitView
节点适应画布窗口, 需要传入节点的 bounds
/**
* 适应大小
* @param bounds {Rectangle} 目标大小
* @param easing {number} 是否开启动画,默认开启
* @param padding {number} 边界空白
*/
ctx.playground.config.fitView(node.bounds, true, 10)
scrollToView
指定节点位置并滚动到画布可见区域, 如果位置已经在可见区域则不会滚动,除非加上 scrollToCenter
强制滚动
/**
* 详细参数说明
* @param opts {PlaygroundConfigRevealOpts}
**/
interface PlaygroundConfigRevealOpts {
entities?: Entity[]
position?: PositionSchema // 滚动到指定位置,并居中
bounds?: Rectangle // 滚动的 bounds
scrollDelta?: PositionSchema
zoom?: number // 需要缩放的比例
easing?: boolean // 是否开启缓动,默认开启
easingDuration?: number // 默认 500 ms
scrollToCenter?: boolean // 是否强制滚动到中心
}
ctx.playground.config.scrollToView({
bounds: ctx.document.getNode('start').bounds,
})
zoomin
放大画布
zoomout
缩小画布
getPoseFromMouseEvent
将浏览器鼠标位置转成画布坐标系
const pos: { x: number, y: number } = ctx.playground.config.getPoseFromMouseEvent(domMouseEvent)
scroll
滚动画布, 需要传入滚动位置, 以及是否平滑滚动, 滚动时间
ctx.playground.config.scroll({ scrollX: 100, scrollY: 100 }, true, 300)
isViewportVisible
判断当前节点是否在视窗以内
ctx.playground.config.isViewportVisible(node.bounds)