deep-engine-demo/packages/docs/api/mesh/HtmlPanel.md
2026-04-19 18:46:28 +08:00

6.1 KiB
Raw Blame History

outline
2
3

HtmlPanel

  • 源文件:packages/sdk/src/mesh/HtmlPanel.ts
  • 文档位置:packages/docs/api/mesh/HtmlPanel.md

枚举:CssType

  • 作用CSS渲染类型枚举
枚举项 说明
CSS2D 'css2d' 枚举值 CSS2D
CSS3D 'css3d' 枚举值 CSS3D
CSS3DSprite 'css3dsprite' 枚举值 CSS3DSprite

类:HtmlPanel

  • 作用HTML面板基础类

构造函数

new HtmlPanel(public type: CssType = CssType.CSS3D)

  • 作用:构造函数

  • 入参:

参数名 类型 必填 说明
type CssType CSS渲染类型
  • 出参:HtmlPanel
  • 返回说明:返回当前类实例。

属性

属性名 可见性 类型 作用
container public HTMLDivElement 用于保存 container 对应的数据。
cssObject public THREE.Object3D 用于保存 cssObject 对应的数据。
isVisible public boolean 用于标记 isVisible 的启用状态。
position public THREE.Vector3 位置数据。

方法

getCssObject(): THREE.Object3D<THREE.Object3DEventMap>

  • 作用获取CSS对象

  • 入参:无

  • 出参:THREE.Object3D<THREE.Object3DEventMap>

  • 返回说明:返回 THREE.Object3D<THREE.Object3DEventMap>

getUniqueId(): string

  • 作用获取唯一ID

  • 入参:无

  • 出参:string

  • 返回说明CSS对象的UUID

show(): void

  • 作用:显示面板

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

hide(): void

  • 作用:隐藏面板

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

toggle(): void

  • 作用:切换面板可见性

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

updatePosition(position: THREE.Vector3): void

  • 作用:更新面板位置

  • 入参:

参数名 类型 必填 说明
position THREE.Vector3 新位置
  • 出参:void
  • 返回说明:无返回值。

updateContent(content: string): void

  • 作用:更新面板内容

  • 入参:

参数名 类型 必填 说明
content string 新内容
  • 出参:void
  • 返回说明:无返回值。

getVisible(): boolean

  • 作用:获取弹窗可见性

  • 入参:无

  • 出参:boolean

  • 返回说明:返回布尔结果。

changeCssType(type: CssType): THREE.Object3D<THREE.Object3DEventMap>

  • 作用动态修改CSS类型

  • 入参:

参数名 类型 必填 说明
type CssType 新的CSS渲染类型
  • 出参:THREE.Object3D<THREE.Object3DEventMap>
  • 返回说明新的CSS对象

getCssType(): CssType

  • 作用获取当前CSS类型

  • 入参:无

  • 出参:CssType

  • 返回说明:返回 CssType

dispose(): void

  • 作用:销毁面板,清理所有资源

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

createCssObject(): void

  • 作用创建CSS对象

  • 入参:无

  • 出参:void

  • 返回说明:无返回值。

构造示例

  • 来源:packages/demo/src/components/htmlPanel/DrillingModal.ts
/**
 * 钻进信息面板类
 */
export class DrillingModal extends HtmlPanel {
    private drillingData: IDrillingData = {
        pipeName: '',
        drillingSpeed: 0,
        currentDepth: 0,
        targetDepth: 0,
        progress: 0,
        pipeRadius: 0,
        status: 'stopped'
    };

函数示例

HtmlPanel.getCssObject

  • 来源:packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue
  if (fillingHtmlPanel) {
    viewer?.scene.remove(fillingHtmlPanel.getCssObject());
    fillingHtmlPanel = null;
  }

HtmlPanel.getUniqueId

  • 来源:packages/demo/src/htmlPanel/GoldMineScene/AirSupplyHtmlPanel.ts
    /**
     * 构造函数
     * @param type CSS渲染类型
     */
    constructor(type: CssType = CssType.CSS2D) {
        super(type);
        this.uuid = this.getUniqueId();
        this.initContent();
        this.attachDeleteEvent();
    }

HtmlPanel.show

  • 来源:packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue
  // 初始化数据
  fillingHtmlPanel.updateData({
    progress: fillingStatus.value.progress,
    currentTime: (Date.now() - fillingStatus.value.startTime) / 1000,
    endTime: fillingParams.value.endTime,
    material: fillingParams.value.material,
    fillingRate: fillingParams.value.fillingRate,
    pressure: fillingParams.value.pressure,
    status: fillingStatus.value.isRunning ? 'running' : 'stopped'
  });

  fillingHtmlPanel.updatePosition(new THREE.Vector3(position.x, position.y + 1, position.z));
  fillingHtmlPanel.show();
  viewer?.scene.add(fillingHtmlPanel.getCssObject());
};

Demo 参考

CssType

以下示例文件中可以看到该 API 的实际调用方式:

  • packages/demo/src/components/htmlPanel/DrillingModal.ts
  • packages/demo/src/components/htmlPanel/PrintModelModal.ts
  • packages/demo/src/components/htmlPanel/RuptureEventModal.ts
  • packages/demo/src/components/htmlPanel/SensorModal.ts
  • packages/demo/src/components/htmlPanel/SingleSensorModal.ts
  • packages/demo/src/components/htmlPanel/TunnelModal.ts
  • packages/demo/src/disasterFormationPanel/TunnelScene/RockBurstPanel.vue
  • packages/demo/src/disasterFormationPanel/TunnelScene/RuptureEventPanel.vue

HtmlPanel

以下示例文件中可以看到该 API 的实际调用方式:

  • packages/demo/src/components/htmlPanel/DrillingModal.ts
  • packages/demo/src/components/htmlPanel/PrintModelModal.ts
  • packages/demo/src/components/htmlPanel/RuptureEventModal.ts
  • packages/demo/src/components/htmlPanel/SensorModal.ts
  • packages/demo/src/components/htmlPanel/SingleSensorModal.ts
  • packages/demo/src/components/htmlPanel/TunnelModal.ts
  • packages/demo/src/htmlPanel/GoldMineScene/AirSupplyHtmlPanel.ts
  • packages/demo/src/htmlPanel/GoldMineScene/DrillingHtmlPanel.ts