Skip to content

DDeiLayer

  DDeiLayer代表一个图层,一个图层含有多个DDeiAbstractShape(图形/容器)。   DDeiLayer实例包含了一个图层的所有数据,以及渲染器,在获取后可以通过它访问其他内容。DDeiStage中的layers属性代表舞台的所有图层。

  一个DDeiStage实例至少包含一个DDeiLayer实例。

  本篇最后提供的示例可以在文档中直接预览。

属性

属性名说明数据类型静态默认值备注
id图层IDstring
unicode唯一编号string系统生成自动编码
name名称string系统生成
models图形集合DDeiAbstractShape[]
midList图形ID集合string[]
index下标number当前layer所在stage的下标
display是否显示number10不显示/1显示
lock锁定booleanfalse
print打印booleantrue
modelNumber模型总数量object0
bg背景object查看详情
stage所属舞台DDeiStage
modelType模型类型stringDDeiLayer

方法

static initByJSON

  根据JSON,创建DDeiLayer实例

参数

参数名类型范围默认值备注
jsonobject文件JSON数据
tempDataobject用于初始化的数据:{currentContainer:当前容器实例,currentStage:当前stage实例}

返回值

类型备注
DDeiLayerDDeiLayer实例

static loadFromJSON

  将JSON转换为一个DDeiLayer实例

参数

参数名类型范围默认值备注
jsonobject文件JSON数据
tempDataobject用于初始化的数据:{currentDdInstance:当前ddInstance实例,currentStage:当前stage实例}

返回值

类型备注
DDeiLayerDDeiLayer实例

toJSON

  将DDeiLayer实例转换为JSON对象

参数

  无

返回值

类型备注
JSON包含了DDeiLayer所有信息的JSON对象

initRender

  初始化渲染器,并绑定

参数

  无

返回值

  无

calModelNumber

  计算并返回当前图层的模型总数量

参数

  无

返回值

类型备注
number模型总数量

addModel

  添加模型

参数

参数名类型范围默认值备注
modelDDeiAbstractShape模型

返回值

  无

getModelById

  根据ID获取图形

参数

参数名类型范围默认值备注
idstringid

返回值

类型备注
DDeiAbstractShape/null图形实例

getModelsByBaseType

  根据类别获取图形

参数

参数名类型范围默认值备注
bmtstring模型类型来自modelType/baseModelType

返回值

类型备注
DDeiAbstractShape[]图形实例列表

removeModel

  删除当前图层模型

参数

参数名类型范围默认值备注
modelDDeiAbstractShape模型
destroybooleanfalse是否销毁

返回值

  无

removeModels

  移除多个模型

参数

参数名类型范围默认值备注
modelDDeiAbstractShape[]模型列表
destroybooleanfalse是否销毁

返回值

  无

removeModelById

  根据ID删除控件

参数

参数名类型范围默认值备注
idsstring[]id列表

返回值

  无

cancelSelectModels

  取消选择图形

参数

参数名类型范围默认值备注
modelsDDeiAbstractShape[]/undefined模型列表
ignoreDDeiAbstractShape[]/undefined忽略模型列表

返回值

  无

getSelectedModels

  获取选中图形

参数

  无

返回值

类型备注
DDeiAbstractShape[]图形实例列表

pushUp

   将控件设置到上一层

参数

参数名类型范围默认值备注
modelDDeiAbstractShape[]模型列表

返回值

  无

pushDown

   将控件设置到下层

参数

参数名类型范围默认值备注
modelDDeiAbstractShape[]模型列表

pushTop

   将控件设置到顶层

参数

参数名类型范围默认值备注
modelDDeiAbstractShape[]模型列表

pushBottom

   将控件设置到底层

参数

参数名类型范围默认值备注
modelDDeiAbstractShape[]模型列表

返回值

  无

setStageRatio

  设置缩放比率

参数

参数名类型范围默认值备注
newValuenumber1.0缩放比率

返回值

  无

getStageRatio

  获取缩放比率

参数

  无

返回值

类型备注
number缩放比率

notifyChange

  通知改变,刷新画布

参数

  无

返回值

  无

示例

代码

vue
<script setup lang="ts">
import DDeiEditorView from "ddei-editor";
import {DDeiEditor,DDeiStage,DDeiLayer,DDeiCoreStandLayout,DDeiAbstractShape} from "ddei-editor";
import { defineComponent, markRaw,getCurrentInstance,ref } from "vue";
//获取主对象实例,代替this获取$refs
const {proxy} = getCurrentInstance()

const options = markRaw({
  config: { 
    "grid": 0, //网格线
    "background": { color: "blue", opacity: 0.1 }, //背景色
    initData: {
      controls: [
        {
          model: "102010",
          text: "初始化图形"
        },
      ]
    }
  },
  //配置扩展插件
  extensions: [
    //布局的配置
    DDeiCoreStandLayout.configuration({
      //配置插件
      'top': [],
      'middle': ['ddei-core-panel-canvasview'],
      'bottom': [],
      'left': [],
      'right': []
    }),
  ],
})

const createControl = () => {
  //获取编辑器 
  let editor:DDeiEditor = proxy.$refs["ddei_editor_api_4"].editor;
  let stage:DDeiStage = editor.files[0].sheets[0].stage
  //添加控件
  editor.addControls([
        {
          id:"control_1",
          model: "102010",
          text: "新图形"
        },
      ]);
};
const removeControl = () => {
  //获取编辑器 
  let editor:DDeiEditor = proxy.$refs["ddei_editor_api_4"].editor;
  let stage:DDeiStage = editor.files[0].sheets[0].stage
  let layer:DDeiLayer = stage.layers[stage.layerIndex]
  //删除控件
  layer.removeModelById(["control_1"])
};

const pushTop = () => {
  //获取编辑器 
  let editor:DDeiEditor = proxy.$refs["ddei_editor_api_4"].editor;
  let stage:DDeiStage = editor.files[0].sheets[0].stage
  let layer:DDeiLayer = stage.layers[stage.layerIndex]
  //获取控件
  let shape:DDeiAbstractShape = layer.getModelById("control_1");
  layer.pushTop([shape])
};

const pushBottom = () => {
  //获取编辑器 
  let editor:DDeiEditor = proxy.$refs["ddei_editor_api_4"].editor;
  let stage:DDeiStage = editor.files[0].sheets[0].stage
  let layer:DDeiLayer = stage.layers[stage.layerIndex]
  //删除控件
  let shape:DDeiAbstractShape = layer.getModelById("control_1");
  layer.pushBottom([shape])
};



</script>

<template>

<button @click="createControl" style="border:1px solid grey;margin-left:5px;padding:5px">创建控件</button>
<button @click="removeControl" style="border:1px solid grey;margin-left:5px;padding:5px">删除控件</button>
<button @click="pushBottom" style="border:1px solid grey;margin-left:5px;padding:5px">移至底层</button>
<button @click="pushTop" style="border:1px solid grey;margin-left:5px;padding:5px">移至顶层</button>

<div style="width:400px;height:400px;margin:100px auto;">
  <DDeiEditorView :options="options" ref="ddei_editor_api_4" id="ddei_editor_api_4"></DDeiEditorView>
</div>
</template>

效果预览

技术支持