models_stage.js

/**
 * @class
 * @summary live2d 舞台数据
 * @classdesc live2d 舞台数据集合, 用于存储 canvas, tips 等文档元素
 * @memberof module:modules
 * @alias DStage
 */
export class DStage {
  /**
   * wrapper 元素的父元素, 默认是 body
   *
   * 如果 [selector]{@link DLive2dOptions.selector} 已经指定, 则父元素是 selector 对应的元素
   * @summary 父元素
   * @type {HTMLElement}
   * @default body
   */
  parent;

  /**
   * 画布的包装器元素, 即画布的父元素
   * @summary 包装器元素
   * @type {HTMLElement}
   * @default div
   */
  wrapper;

  /**
   * 模型需要使用的画布元素
   * @summary 画布元素
   * @type {HTMLCanvasElement}
   * @default canvas
   */
  canvas;

  /**
   * 消息提示需要使用的元素
   * @summary 消息提示元素
   * @type {HTMLCanvasElement}
   * @default canvas
   */
  tips;

  /**
   * 菜单项目的父元素
   * @summary 菜单元素
   * @type {HTMLElement}
   * @default div
   */
  menus;

  /**
   * 与画布同级别的其它元素
   * @summary 其它元素
   * @type {HTMLElement}
   * @default div
   */
  other;

  /**
   * 创建 stage 中的所有元素, 如果其中的元素没有指定, 则创建默认类型的元素
   * @summary Stage数据构造
   * @constructor
   * @param {DStage | null} [data=null] 舞台数据
   */
  constructor(data = null) {
    this.parent = data?.parent ?? document.body;
    this.wrapper = data?.wrapper ?? document.createElement('div');
    this.canvas = data?.canvas ?? document.createElement('canvas');
    this.tips = data?.tips ?? document.createElement('div');
    this.menus = data?.menus ?? document.createElement('div');
    this.other = data?.other ?? document.createElement('div');
  }
}