Skip to content

创建 App

这是一个可选的应用结构,主要用于 图形编辑器 等需要分层渲染的场景。

App 负责承载多个 Leafer 实例分层 协同工作,将不同更新频率的内容分开渲染,以提升性能。


app

统一结构

App 默认可以通过 add() 方法添加多个自定义层。为了方便大家记忆和沟通,我们以现实世界的方式为常用的 Leafer 层进行拟物化命名,并支持通过配置快速添加。

ground?: Leafer

地面层 (背景层),位于最底部的 Leafer 实例,一般用于渲染背景、网格内容(可选)。

tree: Leafer

树结构 (主要内容层),位于中间的 Leafer 实例,相当于 HTML 中的 body。

sky: Leafer

天空层 (变化层),位于最顶部的 Leafer 实例,一般用来渲染 图形编辑器 实例。

我们以 图形编辑器 的例子来展示 App 的实际用法:

ts
import { App, Frame, Rect } from 'leafer-ui'
import { Editor } from '@leafer-in/editor' // 导入图形编辑器插件
import '@leafer-in/viewport' // 导入视口插件(可选)

const app = new App({
    view: window,
    fill: '#F2F2F2', // 背景色
    tree: { type: 'design' }, // 添加 tree 层
    sky: {}  // 添加 sky 层
})

app.tree.add(Frame.one({ // 页面内容
    children: [
        Rect.one({ editable: true, fill: '#FEB027', cornerRadius: [20, 0, 0, 20] }, 100, 100),
        Rect.one({ editable: true, fill: '#FFE04B', cornerRadius: [0, 20, 20, 0] }, 300, 100)
    ]
}, 100, 100, 500, 600))

app.sky.add(app.editor = new Editor()) // 添加图形编辑器,用于选中元素进行编辑操作
ts
import { App, Frame, Rect } from 'leafer-ui'
import '@leafer-in/editor' // 导入图形编辑器插件
import '@leafer-in/viewport' // 导入视口插件(可选)

const app = new App({
    view: window,
    fill: '#F2F2F2',
    editor: {},  //  配置 editor 会自动创建并添加 app.editor 实例、tree 层、sky 层
    //  tree: { type: 'design' },
    //  sky: {}
})

app.tree.add(Frame.one({ // 页面内容
    children: [
        Rect.one({ editable: true, fill: '#FEB027', cornerRadius: [20, 0, 0, 20] }, 100, 100),
        Rect.one({ editable: true, fill: '#FFE04B', cornerRadius: [0, 20, 20, 0] }, 300, 100)
    ]
}, 100, 100, 500, 600))

// app.sky.add(app.editor = new Editor()) // 添加图形编辑器,用于选中元素进行编辑操作
ts
import { App, Leafer, Frame, Rect } from 'leafer-ui'
import { Editor } from '@leafer-in/editor' // 导入图形编辑器插件
import '@leafer-in/viewport' // 导入视口插件(可选)

const app = new App({ view: window, fill: '#F2F2F2' }) 

app.add(app.tree = new Leafer({ type: 'design' })) // 添加 tree 层
app.add(app.sky = new Leafer())  // 添加 sky 层

app.tree.add(Frame.one({ // 页面内容
    children: [
        Rect.one({ editable: true, fill: '#FEB027', cornerRadius: [20, 0, 0, 20] }, 100, 100),
        Rect.one({ editable: true, fill: '#FFE04B', cornerRadius: [0, 20, 20, 0] }, 300, 100)
    ]
}, 100, 100, 500, 600))

app.sky.add(app.editor = new Editor()) // 添加图形编辑器,用于选中元素进行编辑操作

详细了解

App     Leafer

配置 App

基础     视口类型     画布     点按     多点    触屏     滚轮     平移视图     缩放视图

下一步

缩放平移视图

Released under the MIT License.